表返回累计金额

时间:2017-06-25 19:41:24

标签: sql sql-server

我有这张桌子。它包含一个带有点(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

2 个答案:

答案 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以来,支持使用此语法的累积和。

相关问题