안녕하세요,
전주 증감금액을 피벗함수로 구현하고 싶습니다.
하기 table 1과 같이 데이터가 있을때 전주대비 증감금액을 피벗함수로 table 2에 구현하고자 문의드립니다.
감사합니다.
[table 1]
날짜 | 금액 |
20220912 | 10,000 |
20220913 | 20,000 |
20220914 | 30,000 |
20220915 | 40,000 |
20220916 | 50,000 |
20220917 | 60,000 |
20220918 | 70,000 |
20220919 | 80,000 |
20220920 | 90,000 |
20220921 | 10,000 |
20220922 | 20,000 |
20220923 | 30,000 |
20220924 | 40,000 |
[table 2]
내용 | 20220919 | 20220920 | 20220921 | 20220922 | 20220923 | 20220924 |
전주대비 | 70,000 | 70,000 | -20,000 | -20,000 | -20,000 | -20,000 |
WITH t AS ( SELECT '20220912' dt, 10000 amt FROM dual UNION ALL SELECT '20220913', 20000 FROM dual UNION ALL SELECT '20220914', 30000 FROM dual UNION ALL SELECT '20220915', 40000 FROM dual UNION ALL SELECT '20220916', 50000 FROM dual UNION ALL SELECT '20220917', 60000 FROM dual UNION ALL SELECT '20220918', 70000 FROM dual UNION ALL SELECT '20220919', 80000 FROM dual UNION ALL SELECT '20220920', 90000 FROM dual UNION ALL SELECT '20220921', 10000 FROM dual UNION ALL SELECT '20220922', 20000 FROM dual UNION ALL SELECT '20220923', 30000 FROM dual UNION ALL SELECT '20220924', 40000 FROM dual UNION ALL SELECT '20220925', 50000 FROM dual ) SELECT * FROM (SELECT TO_CHAR(TO_DATE(dt, 'yyyymmdd'), 'd') d , CASE WHEN dt >= TO_CHAR(TRUNC(sysdate, 'iw'), 'yyyymmdd') THEN amt ELSE -amt END v FROM t WHERE dt >= TO_CHAR(TRUNC(sysdate, 'iw') - 7, 'yyyymmdd') AND dt <= TO_CHAR(TRUNC(sysdate, 'iw') + 6, 'yyyymmdd') ) PIVOT (SUM(v) FOR d IN (2 월, 3 화, 4 수, 5 목, 6 금, 7 토, 1 일)) ;