1. PIVOT 절
1️⃣ PIVOT 절의 기초 개념
1) PIVOT 절
- 테이블의 행을 칼럼으로 변환하여 데이터의 형태 바꿈
- 데이터 요약 및 보고서 작성에 매우 유용함
- PIVOT 절을 사용하여 특정 칼럼의 고유 값을 새로운 칼럼으로 만들고, 그 칼럼에 해당하는 데이터 집계할 수 있음
2) PIVOT 절의 형식
SELECT 칼럼명
FROM (
SELECT [피벗할 원본 칼럼]
FROM [피벗할 원본 테이블]
) AS [원본 테이블 별칭]
PIVOT (
집계 함수( [집계할 칼럼] )
FOR [피벗 완료된 칼럼명] IN ( [피벗할 칼럼들의 값] ... )
) AS [피벗 테이블 별칭];3) PIVOT 절의 예
SELECT *
FROM (
SELECT DEPTNO, JOB, EMPNO
FROM EMP
)
PIVOT (
COUNT(EMPNO)
FOR JOB IN ('CLERK', 'SALESMAN', 'MANAGER', 'ANALYST', 'PRESIDENT')
);DEPTNO | CLERK | SALESMAN | MANAGER | ANALYST | PRESIDENT |
10 | 1 | 0 | 1 | 0 | 1 |
20 | 1 | 4 | 1 | 0 | 0 |
20 | 2 | 0 | 1 | 2 | 0 |
2. UNPIVOT 절
1️⃣ UNPIVOT 절의 기초 개념
1) UNPIVOT 절
- 칼럼 데이터를 행 데이터로 변환하는 데 사용됨
- PIVOT 절과 반대
2) UNPIVOT 절의 형식
SELECT 칼럼명
FROM (
SELECT [피벗할 원본 칼럼]
FROM [피벗할 원본 테이블]
) AS [원본 테이블 별칭]
UNPIVOT (
[언피벗할 칼럼]
FOR [피벗 완료된 칼럼명] IN ( [반환할 칼럼#1], [반환할 칼럼#2], ... )
) AS [언피벗 테이블 별칭];3) UNPIVOT 절의 예
- 임의의 PIVOT ‘EMP_PIVOT’테이블 생성
CREATE TABLE EMP_PIVOT AS
SELECT *
FROM (
SELECT JOB, DEPTNO, SAL
FROM EMP
WHERE JOB IN ('CLERK', 'MANAGER')
)
PIVOT (
SUM(SAL) AS SAL,
COUNT(*) AS CNT
FOR DEPTNO IN (10 AS DEPT10_ACCOUNTING, 20 AS DEPT20_RESEARCH)
);JOB | DEPT10_
ACCOUNTING_SAL | DEPT10_
ACCOUNTING_CNT | DEPT20_
RESEARCH_SAL | DEPT20_
RESEARCH_CNT |
CLERK | 1300 | 1 | 1900 | 2 |
MANAGER | 2450 | 1 | 2975 | 1 |
- EMP_PIVOT 테이블을 UNPIVOT 하기
SELECT JOB, DEPTNO, SAL
FROM EMP_PIVOT
UNPIVOT (
SAL
FOR DEPTNO IN (DEPT10_ACCOUNTING_SAL, DEPT20_RESEARCH_SAL)
)
ORDER BY JOB, DEPTNO;JOB | DEPTNO | SAL |
CLERK | DEPT10_ACCOUNTING_SAL | 1300 |
CLERK | DEPT20_RESEARCH_SAL | 1900 |
MANAGER | DEPT10_ACCOUNTING_SAL | 2450 |
MANAGER | DEPT20_RESEARCH_SAL | 2975 |
Share article