如何在Oracle SQL中将表从列转置为行

AYR*_*AYR 0 sql oracle transpose

我在sql中有一个表,该表具有许多列,每列具有相同类型的数据。我想将表的列转置为行,以便所有数据都出现在1列中。我正在讨论的表类型的示例:

ID    DATE    TEST_1    TEST_2    TEST_3
----------------------------------------
1     1jan12    98        66       77
2     2jan12    75        89       72
Run Code Online (Sandbox Code Playgroud)

进入:

ID    DATE        TEST       SCORE
-----------------------------------
1     1jan12      TEST_1      98
1     1jan12      TEST_2      66
1     1jan12      TEST_3      77
2     2jan12      TEST_1      75
2     2jan12      TEST_2      89
2     2jan12      TEST_3      72
Run Code Online (Sandbox Code Playgroud)

预先感谢您的任何建议或指示!

Sam*_*Sam 5

一种选择是使用“全部联盟”:

SELECT ID, DATE, 'TEST_1' AS TEST, TEST_1 AS SCORE
FROM TABLE
UNION ALL
SELECT ID, DATE, 'TEST_2' AS TEST, TEST_2 AS SCORE
FROM TABLE
UNION ALL
SELECT ID, DATE, 'TEST_3' AS TEST, TEST_3 AS SCORE
FROM TABLE
Run Code Online (Sandbox Code Playgroud)