본문 바로가기
Tech/Database

세로 기반 데이터를 가로로 출력 쿼리

by Augustine™ 2022. 1. 27.
반응형

쿼리 결과를 가져올 때, 세로 기반 데이터를 가로로 출력이 필요할 때가 있다.

아래와 같은 데이터가 있다고 가정하자.

위와 같은 데이터를 날짜별로 사람 이름(james, julie)를 열 이름으로 지정하여 데이터를 전개해보면 아래와 같다.

 

날짜 1개의 레코드를 집약할 수 있게 group by dt를 사용한다. 그리고 max(case when )구문을 사용해서, 사용자 이름에 해당되는 값을 출력한다. 이를 구현하면 아래와 같다.

select dt
, max(case when name='james' then val end) as james
, max(case when name='julie' then val end) as julie
from vertical_tb
group by dt
order by dt;

 

아래는 여기서 사용한 스키마와 데이터 스크립트다.

create table vertical_tb (
	dt char(10) null,
	name varchar(20) null,
	val varchar(10) null
);

insert into vertical_tb(dt,name,val)values
('2022-01-01','james','200')
,('2022-01-02','james','300')
,('2022-01-03','james','340')
,('2022-01-01','julie','100')
,('2022-01-02','julie','230')
,('2022-01-03','julie','120');

 

반응형

댓글