값이 없어도 뿌리는 방법 있나요? 0 5 3,622

by 볼우물 없는 값 뿌리기 묻지마조인 [2009.06.11 13:47:14]


 

쿼리가 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)    

by 마농 [2009.06.11 13:54:50]
코드테이블과 아우터조인하세요.

by 볼우물 [2009.06.11 14:28:20]
아웃조인해도 안됩니다 ㅠ.
group by를 하니깐 다시 두줄만 생겨요;;

by 마농 [2009.06.11 14:44:28]
그럼 처리하신걸 보여주세요. 고쳐드릴께요.

by 볼우물 [2009.06.11 15:00:16]
엑셀 파일을 첨부했습니다.

by 볼우물 [2009.06.11 15:08:26]
엑셀파일을 다시 수정했습니다. 원하는 결과물을 추가적으로 넣었습니다.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입