如何在sql server中获取列的运行总和

use*_*783 14 sql sql-server select sql-server-2008

嗨我有一个名为Qty的列来自表Bills我想要一个列显示Qty列的运行总和,如下所示:

Qty   Run_Sum
1      1
2      3
3      6
4      10
5      15
Run Code Online (Sandbox Code Playgroud)

建议我运行一些感谢的一些合适的方法

Joh*_*Woo 12

如果您的RDBMS支持窗口功能,

对于 SQL Server 2012

SELECT  Qty,
        SUM(Qty) OVER (ORDER BY Qty) AS CumulativeTOTAL
FROM    tableName
Run Code Online (Sandbox Code Playgroud)

对于 SQL Server 2008

SELECT a.Qty, (SELECT SUM(b.Qty)
               FROM   TableName b
               WHERE  b.Qty <= a.Qty)
FROM   TableName a
ORDER  BY a.Qty;
Run Code Online (Sandbox Code Playgroud)


val*_*lex 12

SQLFiddle演示

SELECT Qty,
SUM(Qty) OVER (ORDER BY Qty) Run_Sum
FROM t ORDER BY Qty
Run Code Online (Sandbox Code Playgroud)

对于2012之前的SQLServer:

select Qty,
(select sum(Qty) from t where Qty<=t1.Qty)
from t t1 order by Qty
Run Code Online (Sandbox Code Playgroud)

SQLFiddle演示

或者您也可以在没有子查询的情况下执行此操作:

select t1.Qty, sum(t2.Qty)
from t t1 
join t t2 on (t1.Qty>=t2.Qty)
group by t1.Qty
order by t1.Qty
Run Code Online (Sandbox Code Playgroud)

SQLFiddle演示