Try this....DECLARE @t TABLE( Period int NOT NULL ,Demand int NOT NULL)INSERT INTO @tSELECT 1, 70 UNION ALLSELECT 2, 29 UNION ALLSELECT 3, 40 UNION ALLSELECT 4, 57 UNION ALLSELECT 5, 33 UNION ALLSELECT 6, 44 -- *** End Test Data ***DECLARE @MAX FLOATDECLARE @MIN FLOATSET @MAX = 80SET @MIN = 50;WITH LotOnHand (Period, Demand, OnHand,Lot)AS( SELECT Period, Demand, CAST( 0 AS FLOAT), @MAX FROM @t WHERE Period = 1 UNION ALL SELECT T.Period, T.Demand ,CASE WHEN (L.Onhand + L.LOT)-L.DEMAND <= @MIN THEN (L.Onhand + L.LOT)-L.DEMAND ELSE (L.Onhand + L.LOT)-L.DEMAND END ,CASE WHEN (L.Onhand + L.LOT)-L.DEMAND <= @MIN THEN @MAX-((L.Onhand + L.LOT)-L.DEMAND) ELSE 0 END FROM @t T JOIN LotOnHand L ON T.Period = L.Period + 1)SELECT *FROM LotOnHandORDER BY Period
-------------------------R...