问题描述
- 这种统计SQL ,怎么写啊。。。。
-
现在的表结果:
Id Num OrderIndex
A1 3 1
A2 2 2
A3 3 3
B1 1 4
B2 4 5想实现的结果:
Id NumA1 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 )