피봇 연산자는 행으로 나열되어 있는 데이터를 열로 나열하여 보기 쉽게 가공하는 것이다
시간순으로 차곡차곡 쌓이는 값이나 대규모 인원의 정보는 세로로 길어 한눈에 알아보기 어렵다
피봇은 세로형을 가로 열로 가독성을 향상한다.
select 필드목록 from 테이블
pivot(집계함수 for 대상필드 in (필드값 목록 as '컬럼닉')) 별명
대상 필드의 값 목록을 새로운 열로 만들고 각 열에 대해 집계함수를 호출하여 결과셋을 만든다
select * from tseason;
item season sale
1 냉면 봄 20
2 냉면 여름 50
3 냉면 가을 30
4 냉면 겨울 10
5 짬뽕 봄 30
6 짬뽕 여름 10
7 짬뽕 가을 20
8 짬뽕 겨울 40
이랬던 테이블이
select * from tseason
pivot (max(sale) for season in ('봄', '여름', '가을', '겨울')) pvt
;
item 봄 여름 가을 겨울
1 냉면 20 50 30 10
2 짬뽕 30 10 20 40
이렇게 변한다
오라클 11g 부터 제공하며 pivot 함수는 기존 테이블 행을 열로, unpivot 함수는 열을 행으로 바꿔서 출력한다
select *
from (select deptno, job, sal from emp)
pivot(max(sal) for deptno in (10, 20, 30))
order by job
;
select *
from (select job, deptno, sal from emp)
pivot(max(sal) for job in ('CLERK' as clerk, 'SALESMAN' as salesman, 'PRESIDENT' as president, 'MANAGER' as manager, 'ANALYST' as analyst)
)
order by deptno
;
'공부 > sql' 카테고리의 다른 글
| 오라클 SYS_CONNECT_BY_PATH(여러 ROW를 한 칼럼으로) (0) | 2025.05.26 |
|---|---|
| 조인 (0) | 2025.05.08 |
| LISTAGG (0) | 2025.05.08 |
| 힌트(Oracle Hint)란 무엇일까? (0) | 2025.05.08 |
| SUM(1) vs COUNT(*) (0) | 2025.05.07 |