Oracle中列转行的方法是使用UNPIVOT操作符。

假设有以下表格:

CREATE TABLE mytable (
    id NUMBER,
    col1 NUMBER,
    col2 NUMBER,
    col3 NUMBER
);

INSERT INTO mytable VALUES (1, 10, 20, 30);
INSERT INTO mytable VALUES (2, 40, 50, 60);

要将列转行,可以使用以下查询:

SELECT id, col_name, col_value
FROM mytable
UNPIVOT (
    col_value FOR col_name IN (col1, col2, col3)
);

结果将会是:

ID  COL_NAME  COL_VALUE
--  --------  ---------
 1  COL1      10
 1  COL2      20
 1  COL3      30
 2  COL1      40
 2  COL2      50
 2  COL3      60

在UNPIVOT操作符中,需要指定要转换的列名,以及转换后的列名和别名。在此例中,将col1、col2和col3列转换为col_name和col_value列,其中col_name是列名,col_value是列中的值。最后,SELECT语句选择id、col_name和col_value列


原文地址: https://www.cveoy.top/t/topic/eQnP 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录