안녕하세요.
첨부파일을 보시면
품번 A01의 수량이 20개가 필요로하고 수량에 맞는 빠른 LOT를 표기해줘야 하는 쿼리입니다.
재고 테이블에 여러 LOT가 있고
요청 수량에 만족하는 빠른 LOT를 표기해줘야 하는데
어떻게 처리를 해야할지 문의 드려요.
Comment 2
-
손꽁쥐
2016.09.13 11:04
DECLARE @num INT = 20;WITH TEST(품번, LOT, 재고량) AS(SELECT 'A01', '20160910', 10 UNION ALLSELECT 'A01', '20160911', 30 UNION ALLSELECT 'A01', '20160912', 40), CTE AS(SELECT *, ROW_NUMBER() OVER(ORDER BY 품번, LOT) AS 'row' FROM TEST), CTE2 AS(SELECT *FROM CTEWHERE row <=ANY (SELECTCASE WHEN SUM(B.재고량) = @num THEN A.rowWHEN (A.row = 1 AND SUM(B.재고량) > @num) THEN A.rowELSE A.row+1END AS 'row'FROM CTE A, CTE BWHERE A.LOT >= B.LOTGROUP BY A.rowHAVING SUM(B.재고량) <= @numOR (@num > 0 AND A.row = 1 AND SUM(B.재고량) > @num)))SELECT DISTINCT 품번, @num AS 수량, STUFF((SELECT ', ' + LOT FROM CTE2 FOR XML PATH('')), 1, 1, '') AS '불출가능 선입LOT'FROM CTE2 -
닝쿠
2016.09.21 07:50
너무 감사합니다 :)
많은 도움이 됐어요.