Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Oracle sql中将表从列转换为行_Sql_Oracle_Transpose - Fatal编程技术网

如何在Oracle sql中将表从列转换为行

如何在Oracle sql中将表从列转换为行,sql,oracle,transpose,Sql,Oracle,Transpose,我在sql中有一个表,它有许多列,每列都有相同类型的数据。我想将表的列转换成行,以便所有数据都显示在一列中。我所说的表格类型的一个示例: ID DATE TEST_1 TEST_2 TEST_3 ---------------------------------------- 1 1jan12 98 66 77 2 2jan12 75 89 72 进入: 提前感谢您的任何建议或指导 一种选择

我在sql中有一个表,它有许多列,每列都有相同类型的数据。我想将表的列转换成行,以便所有数据都显示在一列中。我所说的表格类型的一个示例:

ID    DATE    TEST_1    TEST_2    TEST_3
----------------------------------------
1     1jan12    98        66       77
2     2jan12    75        89       72
进入:


提前感谢您的任何建议或指导

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

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

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

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

如果您在StackOverflow中搜索“OraclePivot”,会有很多问题讨论如何根据需求执行此操作。您使用的是什么版本的Oracle?11g具有早期版本没有的
PIVOT
操作符。您知道编译时有效的
TEST
值集吗?或者,当在基表中插入一个新的
TEST_4
行时,您希望结果中的列数发生变化吗?我认为这不是重复的(至少就case/decode而言),因为他想反过来(columns=>rows而不是rows=>columns)。我正在使用11g。TEST_N的列数是静态的,不会改变。如果您在StackOverflow中搜索“Oracle pivot”,会有很多问题讨论如何根据需求执行此操作。您使用的是什么版本的Oracle?11g具有早期版本没有的
PIVOT
操作符。您知道编译时有效的
TEST
值集吗?或者,当在基表中插入一个新的
TEST_4
行时,您希望结果中的列数发生变化吗?我认为这不是重复的(至少就case/decode而言),因为他想反过来(columns=>rows而不是rows=>columns)。我正在使用11g。TEST\N的列数是静态的,不会更改。