가로 합계..? 질문드립니다 0 4 5,639

by ymym [Oracle 기초] ORACLE 컬럼 DECODE [2018.12.18 09:58:09]


SELECT CUST_NBR,CUST_NME,
        NVL(MAX(DECODE(SUBSTR(DTE,5,2),'01',TOT)),0) SALES_1,
        NVL(MAX(DECODE(SUBSTR(DTE1,5,2),'01',AMT)),0) AMT_1,
        NVL(MAX(DECODE(SUBSTR(DTE,5,2),'02',TOT)),0) SALES_2,
        NVL(MAX(DECODE(SUBSTR(DTE1,5,2),'02',AMT)),0) AMT_2,
        NVL(MAX(DECODE(SUBSTR(DTE,5,2),'03',TOT)),0) SALES_3,
        NVL(MAX(DECODE(SUBSTR(DTE1,5,2),'03',AMT)),0) AMT_3,
        NVL(MAX(DECODE(SUBSTR(DTE,5,2),'04',TOT)),0) SALES_4,
        NVL(MAX(DECODE(SUBSTR(DTE1,5,2),'04',AMT)),0) AMT_4,
        NVL(MAX(DECODE(SUBSTR(DTE,5,2),'05',TOT)),0) SALES_5,    
        NVL(MAX(DECODE(SUBSTR(DTE1,5,2),'05',AMT)),0) AMT_5,
        NVL(MAX(DECODE(SUBSTR(DTE,5,2),'06',TOT)),0) SALES_6,
        NVL(MAX(DECODE(SUBSTR(DTE1,5,2),'06',AMT)),0) AMT_6,
        NVL(MAX(DECODE(SUBSTR(DTE,5,2),'07',TOT)),0) SALES_7,
        NVL(MAX(DECODE(SUBSTR(DTE1,5,2),'07',AMT)),0) AMT_7,
        NVL(MAX(DECODE(SUBSTR(DTE,5,2),'08',TOT)),0) SALES_8,
        NVL(MAX(DECODE(SUBSTR(DTE1,5,2),'08',AMT)),0) AMT_8,
        NVL(MAX(DECODE(SUBSTR(DTE,5,2),'09',TOT)),0) SALES_9,
        NVL(MAX(DECODE(SUBSTR(DTE1,5,2),'09',AMT)),0) AMT_9,
        NVL(MAX(DECODE(SUBSTR(DTE,5,2),'10',TOT)),0) SALES_10,
        NVL(MAX(DECODE(SUBSTR(DTE1,5,2),'10',AMT)),0) AMT_10,
        NVL(MAX(DECODE(SUBSTR(DTE,5,2),'11',TOT)),0) SALES_11,
        NVL(MAX(DECODE(SUBSTR(DTE1,5,2),'11',AMT)),0) AMT_11,
        NVL(MAX(DECODE(SUBSTR(DTE,5,2),'12',TOT)),0) SALES_12,
        NVL(MAX(DECODE(SUBSTR(DTE1,5,2),'12',AMT)),0) AMT_12

 

컬럼 두개를 추가하고 싶은데요. SALES_1부터 12까지의 합과 AMT_1~12까지의 합을 추가하고싶습니다.. 아무리 생각해도 모르겠어서 질문드립니다.. MAX 때문에 그냥 SUM(TOT) SUM(AMT)로 하면 다른값이 나오네요..

by 모래가흙흙 [2018.12.18 10:30:05]

각 월 데이터도 SUM해야 되는거아닌가요?  아래 마농님이 답변드린거 같은데


by ymym [2018.12.18 10:38:18]

SUM하면 값이 이상하게 나오네요..


by 모래가흙흙 [2018.12.18 10:57:37]

먼저 검증이 필요할 것 같네요.   SUBSTR(col, 5, 2)의 값이  '01' ~'12' 가 아닌 값이 존재하거나

누락된게 있는지 먼저 확인해야 할 것 같네요


by 마농 [2018.12.19 09:04:46]

1. 월별 스플릿을 하기 전에 연도조건으로 우선 걸러내셨어야 하는데 그걸 안한게 아닐까?
2. SUM 이 아닌 MAX 를 이용하고 있는데? 중복된 자료가 있는건 아닐까?
3. '01' ~ '12' 외에 다른 자료가 있는 건 아닐까?
2번이 유력해 보입니다.
쿼리 일부만 보고 추측하기 어렵습니다. 전체 쿼리를 보여주세요.

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