전,당월 업체별 입고건수를 구하려 합니다. 0 2 1,310

by 오델 [2016.09.11 15:01:23]


특정 테이블에 일자별 입고 건수들이 있습니다.

업체별로 group by sum을 이용해서 쿼리를 만들어 보려 합니다.

SELECT A1.CD, SUM(A1.CNT1), SUM(a1.CNT2), sum(B1.Cnt1), SUM(B1.cnt2)
FROM (SELECT A.INSUR_CD    CD,
       COUNT(A.INSUR_CD)   CNT1,
       0                   CNT2
  FROM S01_CORPMST A,
           S02_CORPCM B
WHERE 1 = 1
  AND A.USE_YN = 'Y'
  AND A.INSUR_CD IN ( 'L03', 'L05', 'L86', 'L11', 'L83', 'L72', 'L74', 'L34', 'L02' )
  AND A.INSUR_CD = B.INSUR_CD
  AND B.YYYYMMDD BETWEEN TO_DATE( '20160801', 'YYYYMMDD' ) AND TO_DATE( '20160831', 'YYYYMMDD' )
  GROUP BY A.INSUR_CD
) A1,
(SELECT A.INSUR_CD,
        COUNT(A.INSUR_CD)   CNT1,
        0                   CNT2
  FROM S01_CORPMST A,
           S02_CORPCM B
WHERE 1 = 1
  AND A.USE_YN = 'Y'
  AND A.INSUR_CD IN ( 'L03', 'L05', 'L86', 'L11', 'L83', 'L72', 'L74', 'L34', 'L02' )
  AND A.INSUR_CD = B.INSUR_CD
  AND B.YYYYMMDD BETWEEN TO_DATE( '20160701', 'YYYYMMDD' ) AND TO_DATE( '20160731', 'YYYYMMDD' )
  GROUP BY A.INSUR_CD
) B1
GROUP BY A1.CD
;

이렇게 하는것이 맞는 것인지....몇일째 헤딩만 하다 고수님들께 조언을 얻고자 질문을 올려 봅니다.

한수 가르침을 부탁드립니다.

by Dev03 [2016.09.12 09:01:01]

SELECT A.INSUR_CD    CD,
       COUNT(CASE WHEN B.YYYYMMDD BETWEEN TO_DATE( '20160801', 'YYYYMMDD' ) AND TO_DATE( '20160831', 'YYYYMMDD' ) THEN A.INSUR_CD END)   CNT1,
       COUNT(CASE WHEN B.YYYYMMDD BETWEEN TO_DATE( '20160701', 'YYYYMMDD' ) AND TO_DATE( '20160731', 'YYYYMMDD' ) THEN A.INSUR_CD END)   CNT2
  FROM S01_CORPMST A,
           S02_CORPCM B
WHERE 1 = 1
  AND A.USE_YN = 'Y'
  AND A.INSUR_CD IN ( 'L03', 'L05', 'L86', 'L11', 'L83', 'L72', 'L74', 'L34', 'L02' )
  AND A.INSUR_CD = B.INSUR_CD
  AND B.YYYYMMDD BETWEEN TO_DATE( '20160701', 'YYYYMMDD' ) AND TO_DATE( '20160831', 'YYYYMMDD' )
  GROUP BY A.INSUR_CD

 


by 마농 [2016.09.12 09:06:35]

1. 정확한 목적을 알아야 정확한 답변을 드릴텐데요.
  쿼리만 보고 판단하기는 어렵습니다.
  Count 하는게 맞나요? Sum 을 해야 하는 것은 아닌지?
2. 날짜 조건을 주셨는데 해당 컬럼의 자료형이 무었인지요?( Varchar / Date )
  자료형에 따라 조건을 주는 방법이 다릅니다.
3. 조건만 다른 동일 쿼리를 Union 했네요.
  테이블을 두번 읽는 것보다는 한번만 읽도록 수정 가능합니다.

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