반응형
가끔 행과 열을 변환해야 하는 경우가 있는데 그럴 때 사용하는 함수이다. 이외에도 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 |