将以前的值+新值作为列?

时间:2012-08-10 17:26:32

标签: sql sql-server

说我有这个:

select money from somewhere

我现在想要另一个名为cumulativeMoney的列,它将是=到前一行的累积货币+当前行的货币 例如:

m = 2, am = 2
m = 3, am = 5
m = 3, am = 8

...

我能做些什么来实现这个目标? 感谢

1 个答案:

答案 0 :(得分:2)

在任何数据库中,您都可以使用相关子查询执行此操作:

select t.am, t.m,
       (select sum(tprev.m) from t tprev where tprev.am <= t.am) as cumsum
from t

在任何数据库中,您也可以通过以下方式将其作为联接和分组执行:

select t.am, t.m, sum(tprev.m) as cumsum
from t join
     t tprev
     on tprev.am <= t.am
group by t.am, t.m

在支持累积金额的数据库中,您可以这样做:

select t.am, t.m,
       sum(t.m) over (order by t.am) as cumsum
from t

(SQL Server 2012和Oracle支持此功能。)