postgresql에서 세로를 가로로 표현하고 하는데요.
데이터는 아래와 같습니다.
일자 | 구분 | 국가 | 가입건수 | 탈퇴건수 |
20181231 | 웹 | 일본 | 12 | 3 |
20181231 | 웹 | 한국 | 23 | 10 |
postgresql의 crosstab을 써서 pivot을 할 때 아래와 같이 데이터를 추출하고자 합니다.
일자 | 국가 | 가입건수 | 탈퇴건수 | 국가 | 가입건수 | 탈퇴건수 |
20181231 | 일본 | 12 | 3 | 한국 | 23 | 10 |
Select *
from (
Select '웹' AS divi, '일본' AS resion_cd, '20181231' AS work_date, '12' AS join_cnt, '3' AS disjoin_cnt UNION ALL
Select '웹' AS divi, '한국' AS resion_cd, '20181231' AS work_date, '23' AS join_cnt, '10' AS disjoin_cnt );
crosstab을 써서 하는걸로 작성하고 있는데 초보로 어려움이 많네요...ㅜㅜ
고수님들의 많은 답변 부탁드려요....
WITH t AS ( SELECT '웹' divi, '일본' resion_cd, '20181231' work_date, 12 join_cnt, 3 disjoin_cnt UNION ALL SELECT '웹', '한국', '20181231', 23, 10 ) SELECT divi, work_date , MIN(CASE rn WHEN 1 THEN resion_cd END) resion_cd_1 , MIN(CASE rn WHEN 1 THEN join_cnt END) join_cnt_1 , MIN(CASE rn WHEN 1 THEN disjoin_cnt END) disjoin_cnt_1 , MIN(CASE rn WHEN 2 THEN resion_cd END) resion_cd_2 , MIN(CASE rn WHEN 2 THEN join_cnt END) join_cnt_2 , MIN(CASE rn WHEN 2 THEN disjoin_cnt END) disjoin_cnt_2 FROM (SELECT divi, work_date , resion_cd, join_cnt, disjoin_cnt , ROW_NUMBER() OVER(PARTITION BY divi, work_date ORDER BY 1) rn FROM t ) a GROUP BY divi, work_date ;