반응형
쿼리 결과를 가져올 때, 세로 기반 데이터를 가로로 출력이 필요할 때가 있다.
아래와 같은 데이터가 있다고 가정하자.
위와 같은 데이터를 날짜별로 사람 이름(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');
반응형
'Tech > Database' 카테고리의 다른 글
Oracle DBMS_RANDOM을 이용한 테스트 데이터 만들기 (0) | 2023.05.10 |
---|---|
string_agg를 활용한 중복 레코드 확인 (0) | 2022.02.07 |
인조식별자에 대한 고찰 (0) | 2021.07.28 |
DB 튜닝에 대한 얇고 넓은 지식 (0) | 2019.01.13 |
Tibero SQL 튜닝 (0) | 2019.01.12 |
댓글