如何将矩阵数据转换为列

How to convert matrix data into columns

您好,我的 Oracle 数据库的一个单列中有数千条记录 table 像这样

我想借助 SQL 查询在 4 列中显示数据 这是我想要的结果

所以在这个例子中,我总共有 24 条记录,我想每列显示 6 条记录

使用 PIVOT:

SELECT A, B, C, D
FROM   (
  SELECT value,
         MOD( ROWNUM - 1, 4 ) AS col,
         CEIL( ROWNUM / 4 ) AS rn
  FROM   table_name
)
PIVOT( MAX( value ) FOR col IN (
  0 AS A,
  1 AS B,
  2 AS C,
  3 AS D
) )
ORDER BY rn;

因此,如果您的数据是:

CREATE TABLE table_name ( value ) AS
SELECT ROUND(DBMS_RANDOM.VALUE(1,1000))
FROM   DUAL
CONNECT BY LEVEL <= 25;

然后输出:

  A |    B |    C |    D
--: | ---: | ---: | ---:
754 |  622 |  265 |  181
566 |  801 |  844 |  320
938 |  377 |  919 |  306
921 |  402 |  737 |  143
562 |   94 |  868 |  790
617 |  809 |  437 |  469
264 | null | null | null

db<>fiddle here