문제
부서별·직급별 연봉 합계를 다음과 같은 교차표 형태로 조회하려고 한다. 빈칸에 들어갈 올바른 구문은?
| 부서 | 사원 | 대리 | 팀장 | 부장 |
|---|---|---|---|---|
| 인사팀 | ... | ... | ... | ... |
| IT팀 | ... | ... | ... | ... |
| 행정팀 | ... | ... | ... | ... |
① UNPIVOT (SUM(연봉) FOR 직급 IN ('사원','대리','팀장','부장')) ② PIVOT (직급 FOR SUM(연봉) IN ('사원','대리','팀장','부장')) ③ PIVOT (SUM(연봉) FOR 부서 IN ('인사팀','IT팀','행정팀')) ④ PIVOT (SUM(연봉) FOR 직급 IN ('사원','대리','팀장','부장'))
정답
4번
해설
정답은 ④이다. PIVOT 구문은 PIVOT (집계함수(값컬럼) FOR 회전기준컬럼 IN (열로 펼칠 값 목록)) 형태다. 여기서 값은 연봉의 합계이므로 SUM(연봉), 열로 펼칠 기준은 직급이므로 FOR 직급 IN ('사원','대리','팀장','부장')가 되어야 한다. 남은 부서는 자동으로 행(그룹) 기준이 된다.
- ①: UNPIVOT은 반대 방향(열→행) 변환이므로 교차표를 만들지 못한다.
- ②: 집계함수와 회전기준컬럼의 위치가 뒤바뀌어 문법 오류다.
- ③: 직급이 아니라 부서를 열로 펼치므로 요구한 결과(직급별 열)와 다르다.
보충: PIVOT의 FOR 대상은 '열 헤더가 될 컬럼'이며, IN 목록의 값이 그대로 결과 열 이름이 된다.