본문 바로가기
BigData TIL/Database

[Oracle] PIVOT, UNPIVOT

by xxub 2022. 1. 17.
반응형

가끔 행과 열을 변환해야 하는 경우가 있는데 그럴 때 사용하는 함수이다. 이외에도 case when, decode, with절로도 가능하지만 간단한 문장을 선호한다면 피벗테이블을 활용한다. 

ex)

select * from tableA
ENAME GROUP GRADE
하쿠 B 1학년
하울 A 2학년
치히로 B 1학년
소피 A 3학년
키키 A 2학년
지지 B 1학년

 

- PIVOT

SELECT 컬럼
FROM (조회할 데이터 SELECT문)
PIVOT (집계함수(표현식) FOR 피벗대상컬럼 IN (행으로 옮겨줄 열 컬럼 이름)) ;

EX)
CREATE TABLE PIVOU_TABLE AS 
SELECT * 
FROM (SELECT * FROM tableA)
PIVOT ( COUNT(NAME) as cnt FOR GRADE IN ('1학년', '2학년', '3학년')) ;
GROUP '1학년' _GRADE '2학년' _GRADE '3학년' _GRADE
A 0 2 1
B 3 0 0

 

- UNPIVOT

SELECT 컬럼
FROM (조회할 데이터 SELECT문)
UNPIVOT (표현식 FOR 피벗대상컬럼 IN (열로 옮겨줄 행 컬럼 이름)) ;

EX)
SELECT * 
FROM PIVOT_TABLE
UNPIVOT ( NAME FOR GRADE IN ('1학년', '2학년', '3학년')) ;
ENAME GROUP GRADE
하쿠 B 1학년
하울 A 2학년
치히로 B 1학년
소피 A 3학년
키키 A 2학년
지지 B 1학년

 

반응형

'BigData TIL > Database' 카테고리의 다른 글

[Oracle] cursor 개념  (0) 2022.01.27
[Oracle] INTERSECT, MINUS  (0) 2022.01.13
[Oracle] FIRST_VALUE , LAST_VALUE  (0) 2022.01.12
[Oracle] ABS, 절댓값 구하기  (0) 2022.01.11
[Oracle] group by, having절  (0) 2022.01.10