pivot은 행 > 열으로 바꾸는 것이고, unpivot은 열 > 행으로 바꾸는 것이다.
대리님이 그래서 pivot이 뭐냐고 해서 잘 대답했는데 뜻만 알면 뭐하냐고 적용을 못하는데 ㅠ
반나절동안 고민하다가 아래 참고 글을 보고 드디어 이해했다.
예제
WITH 성적 AS ( SELECT '마농' 이름, 80 국어, 90 영어, 90 수학 FROM dual UNION ALL SELECT '마뇽', 90, 80, 70 FROM dual UNION ALL SELECT '만옹', 80, 80, 80 FROM dual UNION ALL SELECT '만용', 60, 60, 60 FROM dual ) SELECT * FROM 성적 UNPIVOT (점수 FOR 과목 IN (국어, 영어, 수학)) PIVOT (MIN(점수) FOR 이름 IN ('마농', '마뇽', '만옹', '만용'))
수많은 글에서 C,V,VAL 이게 대체 그래서 뭔지 하나도 몰랐는데 점수, 과목, 과목명을 보고 포함관계를 이해했다.
WITH TMP AS (SELECT COL1, COL2, COL3 FROM TABLE1) SELECT * FROM TMP PIVOT ( [집계함수] FOR [대상컬럼명] IN [컬럼이 될 값] ) UNPIVOT ( [집계될 데이터의 컬럼명] FOR [unpivot할 컬럼 데이터의 컬럼명] IN [unpivot할 컬럼명] )
마농님 감사합니다.
<!--참고 글 링크--!>
반응형
'Database > SQL' 카테고리의 다른 글
[oracle] ora-00054 리소스가 사용중이거나 NOWAIT가 지정되었거나 시간초과가 만료된 상태로 획득합니다 (0) | 2019.09.19 |
---|---|
[oracle] 테이블 n개만 뽑기 (0) | 2019.07.23 |
[oracle] EXISTS, NOT EXISTS (0) | 2019.07.21 |
[oracle] INSTR (0) | 2019.07.21 |
[oracle] Merge문 (0) | 2019.07.07 |