-1
Burada yeniyim ve gönderim olduğu yerlerden miktar çıkarmak zorunda olduğum senaryo ile geliyorum. Mesela ben 40 Miktar sahip çıkarDaha fazla irsaliye miktarı ile satınalma miktarını dışarı çıkarın
ID SKU QtyRec QTYDisp
1 001A 50 0
2 001A 50 10
3 001A 50 20
4 001A 50 0
aşağıdaki tabloya sahiptir. İlk o zaman 1 veya 4'ten sonra id 2 Sevk Miktarı 2'de sonra 3'te büyüktür Çünkü Ama benim şimdiki senaryoda o Bence sen id 1.
DECLARE @Data table (Id int identity(1,1)
, SKU varchar(10)
, QtyRec INT
,QtyDis INT
)
DECLARE @Qty int = 20
INSERT @Data VALUES
('001A', 50 ,0),
('001A', 50,10),
('001A', 50 ,20),
('001A', 50,0)
;WITH sumqty AS
(
SELECT *, SUM(QtyRec) OVER (PARTITION BY SKU ORDER BY Id) AS TotalQty FROM @Data
)
,takeqty AS (
SELECT *,
CASE
WHEN @Qty >= TotalQty THEN QtyRec
ELSE @Qty - ISNULL(LAG(TotalQty) OVER (PARTITION BY SKU ORDER BY Id), 0)
END AS TakeQty
FROM sumqty
)
SELECT * FROM takeqty WHERE TakeQty > 0
o id 3'ten 50'ye alıyor o id 3'ten 30 almalıdır olarak çünkü subtrac sonra kalan miktar QtyRec ve QtyDis değeri 30'dur. –
@azeemhafeez, düzenlemelere bakın ... –