27,579
社区成员
发帖
与我相关
我的任务
分享
;WITH CTE AS(
SELECT 订单,物料,当前库存数量,未发货数量
,ROW_NUMBER()OVER(PARTITION BY 物料 ORDER BY 订单)RN
FROM TB
)
,CTE2 AS(
SELECT 订单,物料,未发货数量,RN
,当前库存数量 BALANCE
FROM CTE WHERE RN=1
UNION ALL
SELECT T1.订单,T1.物料,T1.未发货数量,T1.RN
,T2.BALANCE-T2.未发货数量
FROM CTE T1
JOIN CTE2 T2 ON T1.物料=T2.物料 AND T1.RN=T2.RN+1
)
SELECT 订单,物料,BALANCE 当前库存数量,未发货数量 FROM CTE2
--sql2005+
SELECT T1.订单,T1.物料,T1.当前库存数量-ISNULL(SUM(T2.未发货数量),0)[当前库存数量],T1.未发货数量
FROM TB T1
LEFT JOIN TB T2 ON T1.物料=T2.物料 AND T1.订单>T2.订单
GROUP BY T1.订单,T1.物料,T1.当前库存数量,T1.未发货数量
--兼容SQL2000的方法