我有这张桌子。它包含一个带有点(a)的列,一个带有playerid(b)的列和带有游戏的列(c)。我想使用SQL将此表转换为a列中的值得到总结的格式。这需要产生下表。列d包含前一个值相加的值,列e包含gameId en列f游戏编号
所以我想这样:
a b c
1 385 11255 1
2 378 11178 1
3 370 11551 1
4 264 11255 2
5 100 11178 2
6 405 11551 2
7 200 11255 3
8 412 11178 3
9 50 11551 3
进入这个:
d e f
385 11255 1
649 11255 2
849 11255 3
378 11178 1
478 11178 2
890 11178 3
370 11551 1
775 11551 2
825 11551 3
答案 0 :(得分:2)
您可以使用SUM() OVER()
窗口功能(如果您的SQL Server版本支持它)
select b,c,sum(a) over(partition by b order by c) as running_sum
from tbl
在不支持它的版本上,您可以使用cross apply
。
select t.b,t.c,t1.total
from tbl t
cross apply (select sum(a) as total from tbl t1 where t1.b=t.b and t1.c<=t.c) t1
答案 1 :(得分:1)
我想你想要这样的东西:
select sum(a) over (partition by b order by c) as d, b as e, c as f
from t
order by e, f;
自SQL Server 2012以来,支持使用此语法的累积和。