select A.id ,sum(B.y+B.d-B.j) from #tb A join #tb B on A.id>=B.id group by A.id order by A.id/* id ----------- --------------------- 1 32624.7500 2 32674.7500 3 32724.7500 4 32774.7500 5 32824.7500 6 32874.7500 7 32924.7500 8 32944.7500 9 33144.7500 10 35144.7500(10 row(s) affected) */
,sum(B.y+B.d-B.j)
from #tb A
join #tb B on A.id>=B.id
group by A.id
order by A.id/*
id
----------- ---------------------
1 32624.7500
2 32674.7500
3 32724.7500
4 32774.7500
5 32824.7500
6 32874.7500
7 32924.7500
8 32944.7500
9 33144.7500
10 35144.7500(10 row(s) affected)
*/
====>
a.id>=b.id
就是实现这个功能,vivianfdlpw() 写的这个可以实现。
我写的那个,从表面上看也是对的。并且开始几条记录也是对的,可是后来却不对了。
where a.id>=b.id
group by a.id
我写的那个,从表面上看也是对的。并且开始几条记录也是对的,可是后来却不对了
=========>楼主只要执行下面语句就知道错在哪了.
select * from #tb a,#tb b
where a.id>b.id and a.id=8
/*
8 .0000 20.0000 .0000 1 .0000 .0000 32624.7500
8 .0000 20.0000 .0000 2 .0000 50.0000 .0000
8 .0000 20.0000 .0000 3 .0000 50.0000 .0000
8 .0000 20.0000 .0000 4 .0000 50.0000 .0000
8 .0000 20.0000 .0000 5 .0000 50.0000 .0000
8 .0000 20.0000 .0000 6 .0000 50.0000 .0000
8 .0000 20.0000 .0000 7 .0000 50.0000 .0000
*/