I am not sure what you are asking, but it seems as though you need either recursion or iteration.The following uses recursion as it is easier to write:-- *** Test Data ***DECLARE @t TABLE( Period int NOT NULL ,Demand int NOT NULL)INSERT INTO @tSELECT 1, 5 UNION ALLSELECT 2, 6 UNION ALLSELECT 3, 7 UNION ALLSELECT 4, 3 UNION ALLSELECT 5, 6 UNION ALLSELECT 6, 3 UNION ALLSELECT 7, 4 UNION ALLSELECT 8, 6 UNION ALLSELECT 9, 3 UNION ALLSELECT 10, 5 UNION ALLSELECT 11, 6 UNION ALLSELECT 12, 3-- *** End Test Data ***DECLARE @OrderingQuantity intSET @OrderingQuantity = 6;WITH LotOnHand (Period, Demand, Lot, OnHand)AS( SELECT Period, Demand ,CASE WHEN Demand > @OrderingQuantity THEN Demand ELSE @OrderingQuantity END ,CASE WHEN Demand > @OrderingQuantity THEN 0 ELSE @OrderingQuantity - Demand END FROM @t WHERE Period = 1 UNION ALL SELECT T.Period, T.Demand ,CASE WHEN T.Demand <= L.Onhand THEN 0 ELSE @OrderingQuantity END ,CASE WHEN T.Demand <= L.Onhand THEN L.Onhand - T.Demand ELSE @OrderingQuantity + L.Onhand - T.Demand END FROM @t T JOIN LotOnHand L ON T.Period = L.Period + 1)SELECT *FROM LotOnHandORDER BY Period