세로 컬럼을 가로 컬럼으로 바꾸기(오라클 버전 10g) 문의 드립니다. 아래 처럼 NUM_CD 한 사람의 세로로 나와 있는 데이터 컬럼을
결과 처럼 가로로 바꿔 표현 할 수 있을까요?
NUM_CD 마다 데이터가 5개일수도 있고 2개 일수도 있습니다. 조언 부탁드리겠습니다~
NUM_CD | GUBUN | GUBUN_CODE | CLASS |
5236794 | 기타 | G1 | 5-A |
5236794 | 피아노 | P1 | 5-A |
5236794 | 피아노 | P1 | 7-A |
5236794 | 트럼펫 | T1 | 2-A |
5236794 | 섹소폰 | S1 | 3-A |
3456 | 기타 | G1 | 1-A |
3456 | 피아노 | P1 | 5-A |
결과=========================================================================================================
NUM_CD | GUBUN 1 | GUBUN_CODE 1 | CLASS 1 | GUBUN 2 | GUBUN_CODE 2 | CLASS 2 | GUBUN 3 | GUBUN_CODE 3 | CLASS 3 | GUBUN 4 | GUBUN_CODE 4 | CLASS 4 | GUBUN 5 | GUBUN_CODE 5 | CLASS 5 |
5236794 | 기타 | G1 | 5-A | 피아노 | P1 | 5-A | 피아노 | P1 | 7-A | 트럼펫 | T1 | 2-A | 섹소폰 | S1 | 3-A |
3456 | 기타 | G1 | 1-A | 피아노 | P1 | 5-A |
WITH t AS ( SELECT 5236794 num_cd, '기타' gubun, 'G1' gubun_code, '5-A' class FROM dual UNION ALL SELECT 5236794, '피아노', 'P1', '5-A' FROM dual UNION ALL SELECT 5236794, '피아노', 'P1', '7-A' FROM dual UNION ALL SELECT 5236794, '트럼펫', 'T1', '2-A' FROM dual UNION ALL SELECT 5236794, '섹소폰', 'S1', '3-A' FROM dual UNION ALL SELECT 3456, '기타' , 'G1', '1-A' FROM dual UNION ALL SELECT 3456, '피아노', 'P1', '5-A' FROM dual ) SELECT num_cd , MIN(DECODE(rn, 1, gbn)) gbn1 , MIN(DECODE(rn, 1, cod)) cod1 , MIN(DECODE(rn, 1, cls)) cls1 , MIN(DECODE(rn, 2, gbn)) gbn2 , MIN(DECODE(rn, 2, cod)) cod2 , MIN(DECODE(rn, 2, cls)) cls2 , MIN(DECODE(rn, 3, gbn)) gbn3 , MIN(DECODE(rn, 3, cod)) cod3 , MIN(DECODE(rn, 3, cls)) cls3 , MIN(DECODE(rn, 4, gbn)) gbn4 , MIN(DECODE(rn, 4, cod)) cod4 , MIN(DECODE(rn, 4, cls)) cls4 , MIN(DECODE(rn, 5, gbn)) gbn5 , MIN(DECODE(rn, 5, cod)) cod5 , MIN(DECODE(rn, 5, cls)) cls5 , MIN(DECODE(rn, 6, gbn)) gbn6 , MIN(DECODE(rn, 6, cod)) cod6 , MIN(DECODE(rn, 6, cls)) cls6 , MIN(DECODE(rn, 7, gbn)) gbn7 , MIN(DECODE(rn, 7, cod)) cod7 , MIN(DECODE(rn, 7, cls)) cls7 FROM (SELECT num_cd , gubun gbn , gubun_code cod , class cls , ROW_NUMBER() OVER(PARTITION BY num_cd ORDER BY '정렬기준') rn FROM t ) GROUP BY num_cd ;