WITH T AS ( SELECT '1' C, 'a' V, 'aa' K FROM DUAL UNION ALL SELECT '2' C, 'b' V, 'bb' K FROM DUAL UNION ALL SELECT '3' C, 'c' V, 'cc' K FROM DUAL UNION ALL SELECT '4' C, 'd' V, 'dd' K FROM DUAL ) --행복사 SELECT MAX(DECODE(C,1,VAL)) A, MAX(DECODE(C,2,VAL)) B, MAX(DECODE(C,3,VAL)) C, MAX(DECODE(C,4,VAL)) D FROM ( SELECT LV, DECODE(LV,1,C,2,V,3,K) VAL, C FROM T ,(SELECT LEVEL LV FROM DUAL CONNECT BY LEVEL <= 3) ) GROUP BY LV --PIVOT/UNPIVOT 11G SELECT A,B,C,D FROM ( SELECT GB, VAL, RN FROM (SELECT C,V,K,ROWNUM RN FROM T) UNPIVOT (VAL FOR GB IN (C AS 1, V AS 2 ,K AS 3)) ) PIVOT(MAX(VAL) FOR RN IN (1 A,2 B,3 C,4 D))
-- PIVOT/UNPIVOT 사용 시 인라인뷰는 필요 없어요. SELECT * FROM (SELECT c, v, k, ROWNUM rn FROM t) UNPIVOT (val FOR gb IN (c AS 1, v AS 2, k AS 3)) PIVOT (MAX(val) FOR rn IN (1 a, 2 b, 3 c, 4 d)) ;
쓸데없는 인라인뷰를 썼네요; 감사합니다~
결과의 (1,2,3,4) 가 컬럼 타이틀 인가요? 값인가요?
jkson님 도움으로 해결하였습니다.
감사합니다.^^