2013-06-12 2 views
0

나는 각 열에 동일한 유형의 데이터를 가진 여러 개의 열을 가진 sql 테이블을 보유하고 있습니다. 모든 데이터가 1 ​​열에 나타나도록 테이블의 열을 행으로 조바꿈하고 싶습니다. 테이블의 유형의 예는 나는 약 이야기하고있다 :오라클 SQL에서 열에서 행으로 테이블을 조 변경하는 방법

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

속으로 :

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 

감사합니다 사전에 어떤 제안이나 길!

+0

"오라클 피벗,"이 요구 사항에 따라 수행하는 방법에 대해 이야기 많은 질문이 있습니다. 어떤 오라클 버전을 사용하고 있습니까? 11g에는 이전 버전에서는 없었던'PIVOT' 연산자가 있습니다. 컴파일시 유효한'TEST' 값을 알고 있습니까? 또는 새로운 'TEST_4' 행을 기본 테이블에 삽입 할 때 결과의 열 개수를 변경 하시겠습니까? –

+0

중복되지 않습니다 (적어도 케이스/디코드에 관한 한). 다른 방법으로 사용하기를 원하기 때문에 (행 => 열 대신 행 => 행). – Sam

+0

나는 11g으로 일하고있다. 열 수 TEST_N은 정적이며 변경되지 않습니다. – AYR

답변

4

하나의 옵션은 노조 모두 '를 사용하는 것입니다 : 당신이에 StackOverflow를 검색하는 경우

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 
관련 문제