재고테이블이 A가 있습니다.
A에는 제품코드, 수량이 있습니다.
주문테이블 B가 있습니다.
B에는 주문일자, 제품코드, 수량이 있습니다.
재고를 조회 했을때
제품코드, 수량, 재고부족일이 조회되었으면 좋겠습니다.
aaaa , 10, -
bbbb , 20, 2013-04-10cccc , 10, 2013-04-20
위와 같은 식으로 조회가 가능할까요?
보충내용입니다.
주문테이블에 주문예정건이 등록되어 있습니다.
예를들어 3월 10일 aaaa 주문 2건,
3월 20일 bbbb 5건 ,
3월 25일 bbbb 15건,
4월 12일 bbbb 6 건이런식으로 정보가 있습니다.
이런상황에서 재고를 조회했을때, 현재 재고수량을 기준으로
aaaa는 재고가 부족한 시점이 아직은 없습니다.
그러나 bbbb는 재고가 부족한 시점은 4월 10일이 됩니다.
이런식으로 자료를 산출했으면 좋겠습니다.
Comment 7
-
난키군
2013.03.08 15:41
-
건우아빠
2013.03.08 16:17
실 업무 테이블과 분명 조금 다를듯 하지만 질문 내용상으로만 국한한다면..
주문 테이블을 가지고 상품별 일자기준으로 누적 주문 수량을 먼저 구하는 쿼리를 작성 하신다음
재고 테이블과 조인 하시고 재고수량 - 누적수량이 마이너스인 경우가 재고가 부족한 건들이 됩니다.
각 상품의 min ( 재고수량 - 누적수량 ) 이 잔여, 필요한 수량이 되겠네요...
-
김주희_283448
2013.03.08 16:38
건우아빠님 상품별 일자기준으로 누적 주문수량을 구하는 방법이 잘 떠오르지 않습니다.
-
건우아빠
2013.03.08 17:09
WITH
JUMUN AS
(
SELECT '20130310' DT ,'AAAA' CD , 2 QTY UNION ALL
SELECT '20130320' ,'BBBB', 5 UNION ALL
SELECT '20130325' ,'BBBB', 15 UNION ALL
SELECT '20130410' ,'BBBB', 1 UNION ALL
SELECT '20130412' ,'BBBB', 6
) ,
RES AS (
SELECT *
, ROW_NUMBER() OVER ( PARTITION BY CD ORDER BY DT ) GSEQ
-- ROW_NUMBER를 이용한것은 동일한 일자일때는 누적 계산시 오류가 나오기 때문에
FROM JUMUN
)
SELECT A.CD,A.DT,A.QTY, SUM(B.QTY) CQTY
FROM RES A LEFT JOIN RES B
ON A.CD = B.CD
AND A.GSEQ >= B.GSEQ
GROUP BY A.CD,A.DT,A.QTY
ORDER BY A.CD,A.DT
-
방랑도사
2013.03.08 17:49
누적값 또는 그값을 이용한 처리(이동평균같은...) 가 은근 까다로운데가 있지요.
다행스럽게도 SQL2012부터 누적값이 함수로 지원됩니다.
-
건우아빠
2013.03.08 17:58
2012를 빨리 써야 하긴 하는데....
-
김주희_283448
2013.03.11 09:30
부족한 글에 관심을 가져주신 모든분들 감사합니다. 특히 건우아빠님 덕분에 해결책을 찾아서 더욱 감사드립니다.
재고 부족일을 어떤식으로 산정하시는지가 중요할 듯 합니다. 어떤 수식을 거치시지 않는다면 새로운 테이블... 예를 들어 재고수량 부족일 table C 를 만들어 각 제품별 재고 수량이 다 소비되는데 까지의 날짜(몇일)등의 정보가 있다면 3개의 테이블을 join 하여 조회가 가능할 것으로 보입니다. 현재의 적어주신 정보로는 조금 부족한듯 합니다.