오라클 DB 월별, 분기별, 년별 금액 구하기 0 9 2,020

by 오라오라클 [SQL Query] [2018.08.24 15:40:51]


테이블 구성이

CFY, PN, MCU, SBL, R021, AMOUNT

년도, 월, 부서,  사업코드, 계정, 금액 으로 구성되어 있습니다.

현재 세로로 데이터가 들어가있는데

년도, 부서, 사업코드, 계정으로 그룹핑하여 가로로 월 금액, 분기금액, 년 금액

이렇게 한줄로 만들고싶습니다.

도움 부탁드립니다.

by 우리집아찌 [2018.08.24 15:44:48]

WITH 절로 샘플 데이터 좀 만들어주세요..

샘플 만들다가 시간 다가네요..


by 열심열심 [2018.08.24 15:49:56]

와.. with 샘플 데이터 뽑는 프로그램 있는줄 알았는데 이제까지 다 수동이였군요

대단하십니다. 

 


by 우리집아찌 [2018.08.24 15:57:10]

개 노가다 입니다.. ㅡㅡ;


by 오라오라클 [2018.08.24 15:52:48]


WITH AA AS

 (SELECT 2018, 1,'       72102','AAA', '41101A    ',10000

    FROM DUAL

  UNION ALL

SELECT 2018, 2,'       72102','AAA', '41101A    ',10000

    FROM DUAL

  UNION ALL

SELECT 2018, 3,'       72102','AAA', '41101A    ',10000

    FROM DUAL
  UNION ALL
SELECT 2018, 4,'       72102','AAA', '41101A    ',10000

    FROM DUAL

  UNION ALL
SELECT 2018, 5,'       72102','AAA', '41101A    ',10000

    FROM DUAL

  UNION ALL
SELECT 2018, 6,'       72102','AAA', '41101A    ',10000

    FROM DUAL

  UNION ALL
SELECT 2018, 7,'       72102','AAA', '41101A    ',10000

    FROM DUAL

  UNION ALL
SELECT 2018, 8,'       72102','AAA', '41101A    ',10000

    FROM DUAL

  UNION ALL
SELECT 2018, 9,'       72102','AAA', '41101A    ',10000

    FROM DUAL

  UNION ALL
SELECT 2018, 10,'       72102','AAA', '41101A    ',10000

    FROM DUAL

  UNION ALL
SELECT 2018, 11,'       72102','AAA', '41101A    ',10000

    FROM DUAL

  UNION ALL
SELECT 2018, 12,'       72102','AAA', '41101A    ',10000

    FROM DUAL


)

SELECT * FROM AA;


by 우리집아찌 [2018.08.24 15:56:54]

다음 부터는 공백 제거해 주셔서 올려주세요.


by 오라오라클 [2018.08.24 15:58:56]

아 네 .. 실제 값이 저렇게 들어가서 .. 죄송합니다 


by 오라오라클 [2018.08.24 15:53:57]

저 금액을 한줄로 년도, 부서 사업코드 계정 1 ~ 12월 별 금액 분기금액 년금액

부탁드립니다 ..ㅠ


by 우리집아찌 [2018.08.24 16:03:57]


WITH AA (CFY, PN, MCU, SBL, R021, AMOUNT) AS (
SELECT 2018, 1, '72102','AAA', '41101A',10000 FROM DUAL UNION ALL
SELECT 2018, 2, '72102','AAA', '41101A',10000 FROM DUAL UNION ALL
SELECT 2018, 3, '72102','AAA', '41101A',10000 FROM DUAL UNION ALL
SELECT 2018, 4, '72102','AAA', '41101A',10000 FROM DUAL UNION ALL
SELECT 2018, 5, '72102','AAA', '41101A',10000 FROM DUAL UNION ALL
SELECT 2018, 6, '72102','AAA', '41101A',10000 FROM DUAL UNION ALL
SELECT 2018, 7, '72102','AAA', '41101A',10000 FROM DUAL UNION ALL
SELECT 2018, 8, '72102','AAA', '41101A',10000 FROM DUAL UNION ALL
SELECT 2018, 9, '72102','AAA', '41101A',10000 FROM DUAL UNION ALL
SELECT 2018, 10,'72102','AAA', '41101A',10000 FROM DUAL  UNION ALL
SELECT 2018, 11,'72102','AAA', '41101A',10000  FROM DUAL  UNION ALL
SELECT 2018, 12,'72102','AAA', '41101A',10000   FROM DUAL 
)

SELECT CFY 
     , MCU 
     , SBL
     , R021
     , SUM(CASE WHEN PN = 1 THEN AMOUNT END ) AMOUNT_1  -- 월
     , SUM(CASE WHEN PN = 2 THEN AMOUNT END ) AMOUNT_2 
     , SUM(CASE WHEN PN = 3 THEN AMOUNT END ) AMOUNT_3 
     , SUM(CASE WHEN PN = 4 THEN AMOUNT END ) AMOUNT_4 
     , SUM(CASE WHEN PN = 5 THEN AMOUNT END ) AMOUNT_5 
     , SUM(CASE WHEN PN = 6 THEN AMOUNT END ) AMOUNT_6 
     , SUM(CASE WHEN PN = 7 THEN AMOUNT END ) AMOUNT_7 
     , SUM(CASE WHEN PN = 8 THEN AMOUNT END ) AMOUNT_8 
     , SUM(CASE WHEN PN = 9 THEN AMOUNT END ) AMOUNT_9 
     , SUM(CASE WHEN PN = 10 THEN AMOUNT END ) AMOUNT_10 
     , SUM(CASE WHEN PN = 11 THEN AMOUNT END ) AMOUNT_11 
     , SUM(CASE WHEN PN = 12 THEN AMOUNT END ) AMOUNT_12 
     , SUM(CASE WHEN PN IN (  1, 2, 3 )  THEN AMOUNT END ) AMOUNT_Q1  -- 분기
     , SUM(CASE WHEN PN IN (  4, 5, 6 )  THEN AMOUNT END ) AMOUNT_Q2
     , SUM(CASE WHEN PN IN (  7, 8, 9 )  THEN AMOUNT END ) AMOUNT_Q3
     , SUM(CASE WHEN PN IN (  10, 11, 12)  THEN AMOUNT END ) AMOUNT_Q3     
     , SUM(AMOUNT) TOT_AMOUNT   -- 전체
  FROM AA
 GROUP BY CFY , MCU , SBL , R021

 


by 오라오라클 [2018.08.24 16:10:29]

감사합니다. 유용하게 잘 사용하도록 하겠습니다!

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