1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | 값이 중복이 떠서 문의드립니다 테이블값과 결과값 첨부해보았습니다. SELECT CASE when GROUPING (CUST_CD)=0 AND GROUPING (OUT_DT)=1 THEN '소계' WHEN GROUPING (CUST_CD)=1 AND GROUPING (OUT_DT)=1 THEN '총계' ELSE CUST_CD END CUST_CD, DECODE( GROUPING (OUT_DT), 1, '' , max (PRS_DT)) PRS_DT , DECODE( GROUPING (OUT_DT), 1, '' , OUT_DT) OUT_DT, CASE WHEN GROUPING (OUT_DT)=1 AND GROUPING (CUST_CD)=0 THEN MAX (CUST_NM) WHEN GROUPING (OUT_DT)=1 THEN '' ELSE MAX (CUST_NM) END CUST_NM, DECODE( GROUPING (OUT_DT), 1, '' , MAX (ITEM_CD)) ITEM_CD, DECODE( GROUPING (OUT_DT), 1, '' , MAX (ITEM_NM)) ITEM_NM, DECODE( GROUPING (OUT_DT), 1, '' , MAX (COMP_CD)) COMP_CD, SUM (OUT_QTY) OUT_QTY, SUM (TOT_COMPR) TOT_COMPR, SUM (TOT_COMPF) TOT_COMPF FROM TABLEXX GROUP BY ROLLUP (CUST_CD, OUT_DT, ITEM_CD) ; |
테이블값
CUST_CD | PRS_DT | OUT_DT | CUST_NM | ITEM_CD | ITEM_NM | OUT_QTY | TOT_COMPF | TOT_COMPR | COMP_CD |
1000104 | 20190802 | 20190802 | 공명 | 601727 | 해바라기 | 1 | 0 | 100 | 제품 |
1000104 | 20190801 | 20190801 | 공명 | 601727 | 해바라기 | 1 | 0 | 100 | 제품 |
결과값
CUST_CD | PRS_DT | OUT_DT | CUST_NM | ITEM_CD | ITEM_NM | COMP_CD | OUT_QTY | TOT_COMPR | TOT_COMPF |
1000104 | 20190801 | 20190801 | 공명 | 601727 | 해바라기 | 제품 | 1 | 100 | 0 |
1000104 | 20190801 | 20190801 | 공명 | 601727 | 해바라기 | 제품 | 1 | 100 | 0 |
1000104 | 20190802 | 20190802 | 공명 | 601727 | 해바라기 | 제품 | 1 | 100 | 0 |
1000104 | 20190802 | 20190802 | 공명 | 601727 | 해바라기 | 제품 | 1 | 100 | 0 |
소계 | 공명 | 2 | 200 | 0 | |||||
총계 | 2 | 200 | 0 |
중복이 뜨는 이유를 잘모르겟어서 문의드립니다.
GROUP BY 는 CUST_CD,OUT_DT,ITEM_CD 이렇게 하고싶고
소계는 거래처마다 하나씩뜨게 하고싶습니다.