[Oracle] 오라클 행을 열로 변환하기 (PIVOT)
- DB/Oracle
- 2019. 12. 26.
아주 가끔 SELECT문의 행을 열로 변환해야 할 경우가 있습니다. 과거에는 행을 열로 바꿀때 CASE WHEN이나 DECODE, WITH절을 통해서 컬럼을 로우로 변환하였었는데 오라클 11g에서 새로나온 피벗테이블을 활용하면 과거에 사용하던 방법보다 훨씬 간단한 문장으로 행과 열을 전환 할 수 있습니다. 이번 포스팅에서는 PIVOT절을 활용하여 행을 열로 바꾸는 방법에 대해 알아보도록 하겠습니다.
[Oracle] 오라클 열을 행으로 변환하기 (UNPIVOT)
샘플 데이터
SELECT * FROM KOR_LOAN_STATUS
위의 데이터는 대출년도, 지역, 대출종류, 대출금을 나타낸 데이터입니다. PIVOT의 로우와 컬럼을 바꿔주는 기능을 활용하여 위 데이터의 행과 열을 바꿔보도록 하겠습니다.
PIVOT을 활용하여 행을 열로 바꾸기
SELECT 컬럼
FROM (조회할 데이터 SELECT문) OR 테이블
PIVOT(집계함수(표현식) FOR 피벗대상컬럼 IN (행으로 올릴 열));
SELECT
*
FROM
(
SELECT * FROM KOR_LOAN_STATUS --조회할 데이터 SELECT문
)
PIVOT
(
SUM(LOAN_JAN_AMT) -- 집계함수
FOR
PERIOD IN ( '201111','201112','201310','201311' ) --행으로 올릴 열
);
FOR컬럼 IN(컬럼1, 컬럼2,) 식으로 나열하면 IN절 안의 값이 컬럼으로 변환되고 집계함수 결과가 변환된 컬럼 값이됩니다. 위와같이 PIVOT을 사용하면 간편한 명령어로 행, 열변환을 할 수 있습니다.
'DB > Oracle' 카테고리의 다른 글
[Oracle] 오라클 계층형 쿼리(START WITH.. CONNECT BY) (14) | 2019.12.28 |
---|---|
[Oracle] 오라클 열을 행으로 변환하기 (UNPIVOT) (2) | 2019.12.27 |
[Oracle] 오라클 그룹별 소계 합계 구하기 (ROLLUP, CUBE) (2) | 2019.12.25 |
[Oracle] 오라클 동적 쿼리 사용법 & 예제 (PL/SQL) (2) | 2019.12.24 |