现在的表结果:
Id Num OrderIndex
A1 3 1
A2 2 2
A3 3 3
B1 1 4
B2 4 5
想实现的结果:
Id Num
A1 3
A2 5
A3 8
B1 9
B2 13
统计后的结果:
根据OrderIndex排序,
每一行的Num的值为 小于等于当前行的OrderIndex的所有Num汇总。
select B. id,(select num(*) from table as A where A.oerderIndex<=B.orderIndex )
from table as B
order by B.orderIndex
大底应该就是这么一个思路 你试试 如果不行了 在下面留言
CREATE TABLE AA
(
Id nvarchar(10), Num int ,OrderIndex int
)
INSERT INTO AA(Id, Num,OrderIndex)VALUES('A1',3,1)
INSERT INTO AA(Id, Num,OrderIndex)VALUES('A2',2,2)
INSERT INTO AA(Id, Num,OrderIndex)VALUES('A3',3,3)
INSERT INTO AA(Id, Num,OrderIndex)VALUES('B1',1,4)
INSERT INTO AA(Id, Num,OrderIndex)VALUES('B2',4,5)
INSERT INTO AA(Id, Num,OrderIndex)VALUES('B3',5,6)
select B. id,(select sum(num) from AA as A where A.orderIndex<=B.orderIndex )
from AA as B
order by B.orderIndex
oracle分析函数可以直接实现,不知道楼主是不是oracle
SUM( Num) OVER (ORDER BY OrderIndex )