데이터베이스 개발자 질문과 답변 게시판

데이터베이스 개발/운영 관련 질문과 답변을 올리는 게시판입니다. 궁금하신 내용을 이곳에서 문의하시면 SQLER 분들의 답변을 받으실 수 있습니다. 문의를 하실때에는 최근 작업하신 특이 사항이나, 장애 발생 전 상황을 상세히 올려 주시면 답글을 적어주시는 SQLER분들의 답변이 더 정확할 수 있으니 도움 되시길 바랍니다. 쿼리 문의일 경우, 실제 문제가 재현되는 테이블생성, 샘플데이터 생성 쿼리를 함께 올려 주시면 더 빠르고 정확한 쿼리 문의 응답이 가능합니다.

DECLARE @CURR DATETIME 

SET @CURR = '2016-03-01' 

SELECT *
      , (SELECT CUSTABB FROM ZCIM10P WITH(NOLOCK) WHERE CUSTNO = A.CUSTNO) CUSTABB
      , (SELECT HGNAME  FROM PPIM10P WITH(NOLOCK) WHERE EMPNO  = A.EMPNO)  EMPNM
   FROM (
 SELECT '1' GUBUN, A.QFACOD, A.EMPNO, A.CUSTNO
      , SUM(CASE WHEN A.ORDDATE BETWEEN CONVERT(CHAR(10), DATEADD(D, DATEPART(DW,@CURR) * -1 - 5, @CURR), 120)
 AND CONVERT(CHAR(10), DATEADD(D, DATEPART(DW,@CURR) * -1 + 1, @CURR), 120) THEN AMT ELSE 0 END) AMT_PW  -- 전주금액
      , SUM(CASE WHEN A.ORDDATE BETWEEN CONVERT(CHAR(10), DATEADD(D, DATEPART(DW,@CURR) * -1 - 5, @CURR), 120)
AND CONVERT(CHAR(10), DATEADD(D, DATEPART(DW,@CURR) * -1 + 1, @CURR), 120) THEN QTY ELSE 0 END) QTY_PW  -- 전주수량   
      , SUM(CASE WHEN A.ORDDATE BETWEEN CONVERT(CHAR(10), DATEADD(D, DATEPART(DW,@CURR) * -1 + 2, @CURR), 120)
AND CONVERT(CHAR(10), DATEADD(D, DATEPART(DW,@CURR) * -1 + 8, @CURR), 120) THEN AMT ELSE 0 END) AMT_CW  -- 금주금액
      , SUM(CASE WHEN A.ORDDATE BETWEEN CONVERT(CHAR(10), DATEADD(D, DATEPART(DW,@CURR) * -1 + 2, @CURR), 120)
 AND CONVERT(CHAR(10), DATEADD(D, DATEPART(DW,@CURR) * -1 + 8, @CURR), 120) THEN QTY ELSE 0 END) QTY_CW  -- 금주수량
      , SUM(CASE WHEN A.ORDDATE BETWEEN CONVERT(CHAR(10), DATEADD(D, -DAY(@CURR), DATEADD(D,1, @CURR)),23)
 AND CONVERT(CHAR(10), DATEADD(D, -DAY(@CURR), DATEADD(M,1, @CURR)),23) THEN AMT ELSE 0 END) AMT_CM  -- 당월금액
      , SUM(CASE WHEN A.ORDDATE BETWEEN CONVERT(CHAR(10), DATEADD(D, -DAY(@CURR), DATEADD(D,1, @CURR)),23)
AND CONVERT(CHAR(10), DATEADD(D, -DAY(@CURR), DATEADD(M,1, @CURR)),23) THEN QTY ELSE 0 END) QTY_CM  -- 당월수량              
   FROM SORD5MV A WITH(NOLOCK)
  WHERE A.ORDDATE BETWEEN CONVERT(CHAR(10), DATEADD(D, -DAY(@CURR), DATEADD(D,1, @CURR)),23) 
                      AND CONVERT(CHAR(10), DATEADD(D, -DAY(@CURR), DATEADD(M,1, @CURR)),23)  
    AND SUBSTRING(A.SLIPNO, 1, 1) <> 'S'
  GROUP BY A.QFACOD, A.EMPNO, A.CUSTNO
 UNION ALL 
 SELECT '2' GUBUN, A.QFACOD, A.EMPNO, A.CUSTNO
      , SUM(CASE WHEN A.OUTDATE BETWEEN CONVERT(CHAR(10), DATEADD(D, DATEPART(DW,@CURR) * -1 - 5, @CURR), 120)
 AND CONVERT(CHAR(10), DATEADD(D, DATEPART(DW,@CURR) * -1 + 1, @CURR), 120) THEN AMT ELSE 0 END) AMT_PW
      , SUM(CASE WHEN A.OUTDATE BETWEEN CONVERT(CHAR(10), DATEADD(D, DATEPART(DW,@CURR) * -1 - 5, @CURR), 120)
AND CONVERT(CHAR(10), DATEADD(D, DATEPART(DW,@CURR) * -1 + 1, @CURR), 120) THEN QTY ELSE 0 END) QTY_PW      
      , SUM(CASE WHEN A.OUTDATE BETWEEN CONVERT(CHAR(10), DATEADD(D, DATEPART(DW,@CURR) * -1 + 2, @CURR), 120)
AND CONVERT(CHAR(10), DATEADD(D, DATEPART(DW,@CURR) * -1 + 8, @CURR), 120) THEN AMT ELSE 0 END) AMT_CW
      , SUM(CASE WHEN A.OUTDATE BETWEEN CONVERT(CHAR(10), DATEADD(D, DATEPART(DW,@CURR) * -1 + 2, @CURR), 120)
AND CONVERT(CHAR(10), DATEADD(D, DATEPART(DW,@CURR) * -1 + 8, @CURR), 120) THEN QTY ELSE 0 END) QTY_CW            
      , SUM(CASE WHEN A.OUTDATE BETWEEN CONVERT(CHAR(10), DATEADD(D, -DAY(@CURR), DATEADD(D,1, @CURR)),23)
AND CONVERT(CHAR(10), DATEADD(D, -DAY(@CURR), DATEADD(M,1, @CURR)),23) THEN AMT ELSE 0 END) AMT_CM
      , SUM(CASE WHEN A.OUTDATE BETWEEN CONVERT(CHAR(10), DATEADD(D, -DAY(@CURR), DATEADD(D,1, @CURR)),23)
AND CONVERT(CHAR(10), DATEADD(D, -DAY(@CURR), DATEADD(M,1, @CURR)),23) THEN QTY ELSE 0 END) QTY_CM                  
   FROM SBOT5MV A WITH(NOLOCK)
  WHERE A.OUTDATE BETWEEN CONVERT(CHAR(10), DATEADD(D, -DAY(@CURR), DATEADD(D,1, @CURR)),23) 
                      AND CONVERT(CHAR(10), DATEADD(D, -DAY(@CURR), DATEADD(M,1, @CURR)),23)  
  GROUP BY A.QFACOD, A.EMPNO, A.CUSTNO
        ) A

캡처3.PNG
[결과값]

결과값은 첨부파일에 있습니다..
일자에 10일이나 20일이나 30일을 넣으면 전주에 대한 데이터가 나오는데
1일이나 2일 같은 앞쪽 일자를 넣으면 데이터가 안나옵니다
1일에서 전주면 지난달 마지막주?가 되게 하고싶은데 어떻게 수정해야할지 모르겠네요..ㅠ
No. Subject Author Date Views
9538 모든 테이블의 데이터를 insert쿼리로 가져오기 [2] 연금술사 2016.10.04 3137
9537 쿼리문 궁금한게 있습니다. ㅠㅠ [1] puffyteemo 2016.10.04 2527
» 쿼리에 뭐가 문제인지 모르겠습니다.. [2] MSSQL초보입문자 2016.10.04 2467
9535 쿼리 좀 도와 주세요 [2] 이유진_301818 2016.10.04 2622
9534 시스템 데이터베이스 복구 관련하여 질문 있습니다. 방혁 2016.10.04 2058
9533 case when 사용시 집계 또는 하위 쿼리가 포함된 식에서는 집계 함수를 수행할 수 없습니다 [3] 냥냥 2016.10.03 6573
9532 질문드립니다. [1] 제지니 2016.10.03 1809
9531 그룹별 특정날짜보다 위면서 최신날짜에 대한 금액 구하기 도와주세요...ㅠㅠ [1] 으네 2016.10.02 2102
9530 My sql - 디비 에서 특정필드의 데이터 누락현상 행담도이장 2016.09.30 2199
9529 <> , != 궁금합니다.. [1] 봉자 2016.09.29 2660
9528 Sql왕초보입니다. 질문드리겠습니다 noonccop 2016.09.29 2645
9527 GO 말고 첫번째와 두번째 사이의 셀렉트를 시간차를 더 둘수 있을까요? [4] neiyan 2016.09.28 2922
9526 쿼리 질문좀 하겠습니다. [2] 달봉이2 2016.09.28 2643
9525 slow query [1] 이유진_301818 2016.09.28 2567
9524 MSSQL에서 쿼리작성 관련 질문 드립니다 [2] MSSQL초보입문자 2016.09.27 2683
9523 MSSQL에서 쿼리작성 관련 질문 드립니다 [2] MSSQL초보입문자 2016.09.27 2381
9522 사원분배 문의(순차적으로) [7] 사야카 2016.09.23 2837
9521 DB용량이 자꾸 늘어나는데 점검 방법이 뭐가 있을까요? [3] 카루카루 2016.09.22 3022
9520 sql server 패치 적용 할 때 졸린가봐요 2016.09.22 1893
9519 서버 재부팅 후 DB 복구 라도 나옵니다 기생오래비 2016.09.21 3351





XE Login