SQL 배우기
[SQL] 가로 데이터를 세로로 변환하기 (SQL 난이도 중)
차근차근 디지털
2024. 1. 12. 11:48
[문제] 표1과 같은 가로 형태의 테이블을 표2로 변환하시오.
[표1]
year | q1 | q2 | q3 | q4 |
2015 | 82000 | 83000 | 78000 | 83000 |
2016 | 85000 | 85000 | 80000 | 81000 |
2017 | 92000 | 81000 |
[표2]
year | quarter | sales |
2015 | q1 | 82000 |
2015 | q2 | 83000 |
: | : | : |
2017 | q4 |
[아이디어]
컬럼으로 표현된 가로 기반 데이터의 특징은 데이터의 수가 고정되었다는 것입니다. (q1, q2, q3, q4)
행으로 전대할 데이터가 고정되었다면, 데이터 수와 같은 수의 일련 번호를 가진 피벗 테이블을 만들고 CROSS JOIN 하면 됩니다.
select q.year
, case when p.idx = 1 then 'q1'
when p.idx = 2 then 'q2'
when p.idx = 3 then 'q3'
when p.idx = 4 then 'q4'
end as quarter
, case when p.idx = 1 then q.q1
when p.idx = 2 then q.q2
when p.idx = 3 then q.q3
when p.idx = 4 then q.q4
end as sales
from quarterly_sales as q
cross join (
select 1 as idx
union all select 2 as idx
union all select 3 as idx
union all select 4 as idx
) as p
참고 자료 : 데이터 분석을 위한 SQL 레시피 ([가사키 나가토, 다미야 나오토], 한빛미디어)