SELECT
'고객ID' = A.CUSTID,
'담당팀' = C.MasterCust,
'업체명' = MAX(C.CustName),
'상호' = MAX(C.CorporateName),
'2016년이전' = MAX(CASE WHEN A.sDate >= '2016-12-31' THEN A.BeforeDefferedAmt+A.OrderAmt-A.PayAmt-A.OffsetAmt ELSE 0 END),
'1월' = MAX(CASE WHEN A.sDate >= '2017-01-32' THEN A.BeforeDefferedAmt+A.OrderAmt-A.PayAmt-A.OffsetAmt ELSE 0 END),
'2월' = MAX(CASE WHEN A.sDate >= '2017-02-32' THEN A.BeforeDefferedAmt+A.OrderAmt-A.PayAmt-A.OffsetAmt ELSE 0 END),
'3월' = MAX(CASE WHEN A.sDate >= '2017-03-32' THEN A.BeforeDefferedAmt+A.OrderAmt-A.PayAmt-A.OffsetAmt ELSE 0 END),
'4월' = MAX(CASE WHEN A.sDate >= '2017-04-32' THEN A.BeforeDefferedAmt+A.OrderAmt-A.PayAmt-A.OffsetAmt ELSE 0 END),
'5월' = MAX(CASE WHEN A.sDate >= '2017-05-32' THEN A.BeforeDefferedAmt+A.OrderAmt-A.PayAmt-A.OffsetAmt ELSE 0 END),
'6월' = MAX(CASE WHEN A.sDate >= '2017-06-32' THEN A.BeforeDefferedAmt+A.OrderAmt-A.PayAmt-A.OffsetAmt ELSE 0 END),
'7월' = MAX(CASE WHEN A.sDate >= '2017-07-32' THEN A.BeforeDefferedAmt+A.OrderAmt-A.PayAmt-A.OffsetAmt ELSE 0 END),
'8월' = MAX(CASE WHEN A.sDate >= '2017-08-32' THEN A.BeforeDefferedAmt+A.OrderAmt-A.PayAmt-A.OffsetAmt ELSE 0 END),
'9월' = MAX(CASE WHEN A.sDate >= '2017-09-32' THEN A.BeforeDefferedAmt+A.OrderAmt-A.PayAmt-A.OffsetAmt ELSE 0 END),
'10월' = MAX(CASE WHEN A.sDate >= '2017-10-31' THEN A.BeforeDefferedAmt+A.OrderAmt-A.PayAmt-A.OffsetAmt ELSE 0 END),
'업체구분' = MAX(CASE WHEN D.Exception_YN = 'Y' THEN '예외업체'
WHEN D.Exception_YN = 'N' THEN ' '
ELSE CAST(D.Exception_YN AS VARCHAR) END)
FROM DPrinting..DP_CustomerDateTotal AS A
INNER JOIN DPrinting..DP_Customer AS C
ON A.CustID = C.CustId
INNER JOIN GoodPrinting..WEB_Member AS D
ON A.CustID = D.mem_ErpCustID
WHERE A.BeforeDefferedAmt+A.OrderAmt-A.PayAmt-A.OffsetAmt <> '0.00' AND D.mem_ErpCustID = '34205'
GROUP BY A.CUSTID, C.MasterCust
ORDER BY 2
------------------
업체별로 월별 미수금액을 뽑아야합니다.
A.BeforeDefferedAmt+A.OrderAmt-A.PayAmt-A.OffsetAmt 이 식이 미수액을 계산하는 식이고
해당달의 마지막날짜를 출력하기위해 max(sdate)을 썼는데요
10월만 제대로 출력이 되고 다른건 출력이 안됩니다...
뭐가 문제일까요????
DPrinting..DP_CustomerDateTotal --> 주문날짜, 이월미수, 총매출, 에누리, 순매출액 정보가 있습니다.
DPrinting..DP_Customer / GoodPrinting..WEB_Member --> 웹,사내 회원테이블입니다.
Comment 8
-
이리
2017.11.13 16:45
-
파란약
2017.11.13 16:51
한줄만 쓴건 아니구요 - 지금 위에 써놓은 쿼리 고대로 돌렸을때요ㅠㅠ
제대로 계산이 안되서 나와요
-
건우아빠
2017.11.13 16:52
테이블, 컬럼의 정보기 필요.
max로 표시한다면 이상한 값이 나올듯 한데요...
각월별 sDate 의 max 일자의 값으로 나타내여 할듯 합니다.
-
파란약
2017.11.13 16:59
MAX(CASE WHEN A.sDate >= '2017-10-31' THEN A.BeforeDefferedAmt+A.OrderAmt-A.PayAmt-A.OffsetAmt ELSE 0 END),
sDate :날짜구요
제일마지막주문일을 뽑기위해 MAX를 쓴거고, A.BeforeDefferedAmt+A.OrderAmt-A.PayAmt-A.OffsetAmt 미수액을 계산하는 계산식입니다.!
제 생각으로는 10월 제일 마지막 주문일자의 미수액을 계산되는게 맞는거같은데...
10월은 제대로 계산이 됩니다.
그런데 10월을 제외한 모든 월별 미수액은 제대로 계산이 되지않거든요..
뭐가 잘못된건지요..
-
건우아빠
2017.11.13 17:06
MAX 일자를 뽑고 그 일자 가지고
A.BeforeDefferedAmt+A.OrderAmt-A.PayAmt-A.OffsetAmt 를 계산하셔야 하는 A.sDate 일자보다 이하인 일자 값들중 max를 구하시는 결과 입니다.
고객 테이블을 기준으로 월별 max일자를 만드신다음 조인을 하시는게 겂을 구하시기 쉬울듯 합니다.
DPrinting..DP_CustomerDateTotal 의 데이타가 마감식으로 고객의 그달 주문이 없더라도 전월 자료를 가져와서 자료를 만들어지는 형식이면 월별 max일을 구하시면 되지만 그렇지 않는 경우라면 고객 테이블을 기준으로 자료를 만드셔야 할듯 합니다.
-
파란약
2017.11.13 17:52
고객테이블에는 주문정보가 없고 회원정보만 있는데
그러면 주문정보가 있는테이블을 조인해야된다는 말씀이신가요???
-
건우아빠
2017.11.13 18:02
그게 자료만들기는 쉬울즛합니다 -
파란약
2017.11.13 18:04
네 감사합니다! 한번 해봐야겠어요
MAX(A.sDate) 한줄만 사용하신건가요?