설마 DECODE내에 SUM을 구현한 분이 SUM할줄 몰라서 질문을 올렸으리라 생각하기 힘듭니다.
질문이 원하는 내용과 약간 다른 것 같습니다.
원하는게 단순한 sum방법이 아니고 현재 쿼리에서 group by별 합계가 나오고있는데 거기에 총합계까지 one-sql로 나오는 쿼리를 원한다고 가정하여 작성해 드리겠습니다.
이런 경우라면 Key-Point는 group by 시 ROLLUP 또는 CUBE 처리입니다.
그리고 DECODE(SUM(B.INOU_AMOU),'',0,SUM(B.INOU_AMOU)) 는 decode보다는
NVL(SUM(B.INOU_AMOU), 0)으로 단순화 할 수 있으니 참고하시구요...;
SELECT DECODE(B.INOU_CD,'',A.COM_NUM,B.INOU_CD)INOU_CD,
A.COM_NUM,A.COM_CDNM, NVL(SUM(B.INOU_AMOU), 0) AS SM
FROM ACC_COMMON A
LEFT OUTER JOIN ACC_PRO_SPEND_DETAIL B ON B.INOU_CD = A.COM_NUM AND B.INOU_CLCD = A.COM_CLCD
WHERE A.COM_CLCD = 'C1'
GROUP BY ROLLUP(B.INOU_CD, A.COM_NUM, A.COM_CDNM )
HAVING GROUPING(A.COM_CDNM) = 0 --> 원래 group by된 raw-data들 조건
OR GROUPING(B.INOU_CD) = 1 --> ROLLUP에 의해 생성된 총합계 row의 조건
ORDER BY A.COM_NUM ASC
HAVING절은 님이 총합계만 원한다는 가정에 맞춘것이니 쓰지말고 테스트 해 보세요.
각 group by 컬럼별 소계와 총합계가 나타날 겁니다.
이 의미가 아니라면 원하는 결과를 정확히 표현하시어 추가질문 하시기 바랍니다.
input이 애매하면 output은 절대 원하는대로 정확히 안나오는 거 아시죠?
건승하시길...수고하세요~~