긴 쿼리중에 이부분이 문제인 부분만 때왔습니다.ㅜ
SELECT group_type, count(*) as quantity_basic, 0 as quantity_stretched
FROM
(
SELECT TOP (500) * FROM
(
SELECT i.group_type,h.start_t
FROM tbl_serial_history h, tbl_selling s, tbl_incentive i
WHERE h.sell_no=s.sell_no AND s.model_num = i.model_num
AND h.start_t >= '2010-01-01' AND h.sell_state='Y' AND s.sell_type='ST'
AND h.start_t < '2010-12-31'
AND s.buyer_no IN(select user_no from tbl_user where mod_no=81)
AND (s.seller_no = i.dist_no1 or s.seller_no = i.dist_no2)
)x order by start_t
) a
group by a.group_type
설명:
- 1월부터 12월까지 거래내역을 저 top의 갯수만큼 불러 오는겁니다. 여기에는 500이라고 쓰여있죠..
거래내역은 만약 A제품이 10개가 1월1일에 거래가 됐으면
거래번호 |제품명| 시리얼번호 | 거래일 | 타입
1 A a0001 01-01 ST
1 A a0002 01-01 ST
1 A a0003 01-01 ST <-- 판매
.. .... ... .. ...
--------------------------------------------------
3 A c0001 01-02 RN <-- 반품
------------------------------------------------------
이런식으로 이렇게 하나의 거래번호에 각각다른 시리얼 번호가 10개가 등록되면 1월 1일에
어떤 제품이 10개가 거래된것입니다.
이렇게 해서 1월부터 12월까지 거래된거중에 500개를 불러오는겁니다.
자 이제 문제는...ㅜ
문제점 :
이제 500개의 거래내역이 불러와 지는데...ㅜ
저기 빨간색 표시의 sell_type="ST" 이거 판매한것이거든요.
그리고 sell_type="RN" 이게 반품했다는 것인데..
위에보시면 ST한거만 뽑아 내잖아요.
이게 반품을 뺀 값이 나와야 하는데 아..이게 어떤식으로 해야할지...
이게 1월부터 순차적으로 거래내역을 뽑는건데..
만약 top(500)까지 반품없이 ST만 했다면 문제될게 없는데..
만약 1월13일까지 ST한게 500개인데 1월4일날 반품한 카운트가 10개가 있다면..
이 10개를 빼고 1월 14일날 ST 10개의 카운트가 나와야 하는 이런 상황인것입니다.!
아 이게 글로 표현할려니 설명을 잘 못하겠네요..ㅜ
엉엉..저의 미천한 실력이 점점 바닥을 드러내고 있는 현실이 슬픕니다.ㅜ
|