DB

[SQL] 행 -> 열 전환, 행을 하나의 열로 합치기

Lawmin 2010. 10. 12. 17:30
행 -> 열 전환

[C1] [C2]
ID1 T
ID2 T
ID2 S
ID2 P
ID3 T
ID3 P

위와 같을 때 아래와 같이 행을 열로 한번에 나타내고 싶을 때?

[C1] [T] [S] [P]
ID1 Y
ID2 Y Y Y
ID3 Y Y

[Sol.]

SELECT C1,
MAX(DECODE(C2, 'T', 'Y', NULL)) "T",
MAX(DECODE(C2, 'S', 'Y', NULL)) "S",
MAX(DECODE(C2, 'P', 'Y', NULL)) "P"
FROM TABLE
GROUP BY C1
ORDER BY C1

---------------

 행을 하나의 열로 합치기

SELECT  REPLACE(MAX(SYS_CONNECT_BY_PATH(data, '/#/')), '/#/', '')
FROM    (
            SELECT  ROWNUM rn,
                    t.*
            FROM    (
                        SELECT 'c' data FROM DUAL UNION ALL
                        SELECT 'b' data FROM DUAL UNION ALL
                        SELECT 'a' data FROM DUAL
                    ) t
        )
START WITH rn = 1                
CONNECT BY PRIOR rn = rn - 1;