테이블 하나에 트렌드(차트)로 표시할 데이터가 쌓이는데 포인트가 여러가지입니다.
NAME | VALUE | TIMESTAMP |
A | 1 | 123 |
B | 10 | 123 |
C | 21 | 123 |
A | 5 | 234 |
B | 12 | 234 |
C | 25 | 234 |
... | ... | ... |
위와 같이 A,B,C 라는 세개의 포인트가 동시에 한번씩 VALUE를 기록하게 되는데요
위의 표는 이미 한번 LEFT OUTER JOIN을 통해서 편집한 SELECT문 결과입니다.
이 데이터를 A,B,C 각 포인트별로 한행으로 만들고 싶습니다.
NAME1 | VALUE1 | NAME2 | VALUE2 | NAME3 | VALUE3 | TIMESTAMP |
A | 1 | B | 10 | C | 12 | 123 |
A | 5 | B | 12 | C | 25 | 234 |
... | ... | ... | ... | ... | ... | ... |
위와 같이 SELECT 되면 되는데요.
디비를 잘몰라서 여러시도를 해봤는데 해결이 잘 되지 않아서
질문글 올립니다.
도움주시면 정말 감사하겠습니다. ^^
Comment 1
-
건우아빠
2020.05.26 17:00
with res as(select 'A' NAME , 1 VALUE , 123 TIMESTAMP union allselect 'B' , 10 , 123 union allselect 'C' , 21 , 123 union allselect 'A' , 5 , 234 union allselect 'B' , 12 , 234 union allselect 'C' , 25 , 234)select TIMESTAMP, MAX(case when NAME = 'A' then NAME end) NAME1, SUM(case when NAME = 'A' then VALUE end) VALUE1, MAX(case when NAME = 'B' then NAME end) NAME2, SUM(case when NAME = 'B' then VALUE end) VALUE2, MAX(case when NAME = 'C' then NAME end) NAME3, SUM(case when NAME = 'C' then VALUE end) VALUE3from resgroup by TIMESTAMP