[Oracle] 오라클 행을 열로 변환하기 (PIVOT)

아주 가끔 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을 사용하면 간편한 명령어로 행, 열변환을 할 수 있습니다. 

댓글

Designed by JB FACTORY