
MySQL의 CASE WHEN 으로 Pivot Table 만드는 예제.
Pivot Table이란?
Row에 있는 값들을 Column으로 변형 한 테이블
예제)
manager 테이블

피벗 테이블

-- employee_id로 부서별로 첫번째로 오는 employee_id, 두번째로 오는 employee_id, N번째로 오는 employee_id을 알아내기 위해 변수 설정
SET @d001_CNT = 0, @d002_CNT = 0, @d003_CNT = 0, @d004_CNT = 0;
-- 문자열의 알파벳순서에서 최솟값(MIN)은 A(a)로 시작하는 것을 추출
SELECT MIN(d001) AS 부서1,
MIN(d002) AS 부서2,
MIN(d003) AS 부서3,
MIN(d004) AS 부서4
FROM (SELECT CASE WHEN department_id = 'd001' THEN employee_id END AS d001,
CASE WHEN department_id = 'd002' THEN employee_id END AS d002,
CASE WHEN department_id = 'd003' THEN employee_id END AS d003,
CASE WHEN department_id = 'd004' THEN employee_id END AS d004,
CASE
WHEN department_id = 'd001' THEN (@d001_CNT:= @d001_CNT + 1)
WHEN department_id = 'd002' THEN (@d002_CNT:= @d002_CNT + 1)
WHEN department_id = 'd003' THEN (@d003_CNT:= @d003_CNT + 1)
WHEN department_id = 'd004' THEN (@d004_CNT:= @d004_CNT + 1)
END AS ROW_NUM
FROM manager
ORDER BY employee_id
) T
GROUP BY ROW_NUM;