쿼리가 group by로 해서 출력을 하는데..
없는 것도 뿌리라고 하더군요.
예를 들어 쿼리가
select code, sum(val), sum(count)
from ( select bcode from C
group by bcode) B, A
where A.code = B.bcode
group by rollup(code)
라고 했을 때
결과 값이
코드 | 금액 | 건수
1 | 200 | 3
3 |100 | 1
이렇게 출력됐다고 했을 때 원하는 결과는
코드 | 금액 | 건수
1 | 200 | 3
2 | 0 | 0
3 | 100 | 1
4 | 0 | 0
이렇게 나와야 합니다 코드에 해당하는 값이 없던
groub by에 묶인 코드가 1,3밖에 없어도
없는 코드에 해당하는 금액과 건수는 0으로 뿌려서 나와야 한다는 거죠.
전에 가르쳐주신대로 묻지마조인을 하고 다시 조인을 걸었더니
금액과 건수가 짬봉이 되버리더라구요. 원래 코드값이 없는 곳에 금액이 200이 나온달지..
그런 문제가..
어떻게 해결해야 합니까?
엑셀파일을 첨부하겠습니다.
엑셀 파일을 보시면 테이블 자료와 결과값이 나오는데..
제가 원하는 건 sum_gb가 1~4까지 뿌려져야 하고
tong_comment도 네가지 다 뿌려져야 한다는 겁니다..
그리고 물론 거기에 따른 금액과 건수값이 같아야 하죠..
제가 짠 원 쿼리입니다.
SELECT M.SUM_GB, SUBSTR(C.SEBU_COD,1,1) SEBU_COD,
CASE WHEN SUBSTR(C.SEBU_COD,1,1) IS NULL
AND SUM_GB = ’1’ THEN ’시세계’
WHEN SUBSTR(C.SEBU_COD,1,1) IS NULL
AND SUM_GB = ’2’ THEN ’구세계’
WHEN SUBSTR(C.SEBU_COD,1,1) IS NULL
AND SUM_GB = ’3’ THEN ’군세계’
WHEN SUBSTR(C.SEBU_COD,1,1) IS NULL
AND SUM_GB = ’4’ THEN ’국세계’
ELSE MAX(TONG_COMMENT)
END TONG_COMMENT,
SUM(M.HWAN_NEW_CNT + M.HWAN_CURR_CNT + M.HWAN_AGO_CNT) HWAN_CNT,
SUM(M.HWAN_NEW_AMT + M.HWAN_CURR_AMT + M.HWAN_AGO_AMT) HWAN_AMT,
SUM(M.HWAN_NEW_CNT) HWAN_NEW_CNT, SUM(M.HWAN_NEW_AMT) HWAN_NEW_AMT,
SUM(M.HWAN_CURR_CNT) HWAN_CURR_CNT, SUM(M.HWAN_CURR_AMT) HWAN_CURR_AMT,
SUM(M.HWAN_AGO_CNT) HWAN_AGO_CNT, SUM(M.HWAN_AGO_AMT) HWAN_AGO_AMT,
SUM(M.EXP_NEW_CNT + M.EXP_CURR_CNT + M.EXP_AGO_CNT) EXP_CNT,
SUM(M.EXP_NEW_AMT + M.EXP_CURR_AMT + M.EXP_AGO_AMT) EXP_AMT,
SUM(M.EXP_NEW_CNT) EXP_NEW_CNT, SUM(M.EXP_NEW_AMT) EXP_NEW_AMT,
SUM(M.EXP_CURR_CNT) EXP_CURR_CNT, SUM(M.EXP_CURR_AMT) EXP_CURR_AMT,
SUM(M.EXP_AGO_CNT) EXP_AGO_CNT, SUM(M.EXP_AGO_AMT) EXP_AGO_AMT
FROM (
SELECT SEBU_COD, MAX(TONG_COMMENT) TONG_COMMENT
FROM CUTBACK_CD_TAB
GROUP BY SEBU_COD) C,
HWAN_MAGAM_TAB M
WHERE M.SUM_CD = C.SEBU_COD
AND M.MAGAM_YYYYMM = ’200905’
AND M.MAGAM_GB = ’3’
AND M.SUM_GB <> ’0’
AND M.MAGAM_SGG_COD = ’000’
GROUP BY ROLLUP(M.SUM_GB, SUBSTR(C.SEBU_COD,1,1))
ORDER BY M.SUM_GB, SUBSTR(C.SEBU_COD,1,1)