日期:2014-05-17  浏览次数:20465 次

想要这个效果怎么实现?求解答
现在查询的结果是这样的
订单编号         物料名称          订购数量   预定交期        库存数量   剩余库存数量
SEORD018476 A3.01.01.0002 144.00 2011-07-25 461.30 317.30
SEORD019189 A3.01.01.0002 108.00 2011-08-01 461.30 353.30
SEORD019381 A3.01.01.0002 45.00 2011-08-03 461.30 416.30
SEORD022662 A3.01.01.0002 108.00 2011-09-07 461.30 353.30
SEORD022752 A3.01.01.0002 108.00 2011-09-08 461.30 353.30
SEORD022831 A3.01.01.0002 72.00 2011-09-09 461.30 389.30
SEORD024176 A3.01.01.0002 20.00 2011-09-26 461.30 441.30
SEORD035922 A3.01.01.0002 60.00 2012-02-23 461.30 401.30


怎么做才可以达到这样的效果:
SEORD018476 A3.01.01.0002 144.00 2011-07-25 461.30 317.30
SEORD019189 A3.01.01.0002 108.00 2011-08-01 461.30 209.30
SEORD019381 A3.01.01.0002 45.00 2011-08-03 461.30 164.30
SEORD022662 A3.01.01.0002 108.00 2011-09-07 461.30 56.30
SEORD022752 A3.01.01.0002 108.00 2011-09-08 461.30 -51.7
.
..
...
....
注意看最后一列的变化,就是说,下一行的剩余库存数量 = 上一行的剩余库存数量 - 本行订单那数量
按日期升序排列的
请大侠帮忙,在线等,给思路就可以,table, 字段随便写

------解决方案--------------------
没测过,你试试,把[huang]改成你的表名就可以了,列名应该不用改吧
;WITH cte AS (
select [订单编号],[物料名称],[订购数量],[预定交期],[库存数量],[剩余库存数量],ROW_NUMBER()OVER(ORDER BY [预定交期] )id from [huang] )
,cte1 AS 
(
SELECT [订单编号],[物料名称],[订购数量],[预定交期],[库存数量],[剩余库存数量],id
FROM cte 
WHERE id=1
UNION ALL 
SELECT b.[订单编号],b.[物料名称],b.[订购数量],b.[预定交期],b.[库存数量],a.[剩余库存数量]-b.[订购数量],b.id
FROM cte1 a INNER JOIN cte b ON b.id=a.id+1

)
SELECT * FROM cte1