아래와 같이 table 에 저장된 data 를 가로에서 세로로 변경이 필요할 때가 있다.
idx | col1 | col2 | col3 |
1 | a | b | c |
2 | A | B | C |
위 테이블의 샘플 table
SELECT 1 idx
, ‘a’ col1, ‘b’ col2, ‘c’ col3
UNION ALL
SELECT 2
, ‘A’, ‘B’, ‘C’
가로형 테이블을 세로형으로 임시 변환(중복 값 존재)
SELECT a.idx
, b.m
, CASE b.m
WHEN 1 THEN col1
WHEN 2 THEN col2
WHEN 3 THEN col3
END v
FROM (
SELECT 1 idx
, ‘a’ col1, ‘b’ col2, ‘c’ col3
UNION ALL
SELECT 2
, ‘A’, ‘B’, ‘C’
) a
, (
SELECT 1 m
UNION ALL SELECT 2
UNION ALL SELECT 3
) b
중복 값을 제거하여 최종 결과물 생성
SELECT m idx
, MIN(CASE idx WHEN 1 THEN v END) row1
, MIN(CASE idx WHEN 2 THEN v END) row2
FROM (
SELECT a.idx
, b.m
, CASE b.m
WHEN 1 THEN col1
WHEN 2 THEN col2
WHEN 3 THEN col3
END v
FROM (
SELECT 1 idx
, ‘a’ col1, ‘b’ col2, ‘c’ col3
UNION ALL
SELECT 2
, ‘A’, ‘B’, ‘C’
) a
, (
SELECT 1 m
UNION ALL SELECT 2
UNION ALL SELECT 3
) b
) c
GROUP BY m
idx | row1 | row2 |
1 | a | A |
2 | b | B |
3 | c | C |
[polldaddy rating=”7739789″]