전주대비 증감금액을 피벗함수로 구현하고 싶습니다. 0 1 816

by 파갈제잉 [SQL Query] [2022.09.22 12:19:26]


안녕하세요, 

전주 증감금액을 피벗함수로 구현하고 싶습니다.

하기 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

 

by 마농 [2022.09.22 13:54:49]
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 일))
;

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입