在SQL Server中添加正在运行的总列

时间:2015-12-09 23:29:32

标签: sql-server

我有一个SQL Server查询的结果集如下:

项目周数量

1     1      500
1     2     -100
1     3     -200
2     1      800
2     2     -600
2     3     -800

我想知道的是,是否可以推导出第四列,为每个项目提供总计金额?

我想要的结果如下:

项目周总金额

1     1      500  500
1     2     -100  400
1     3     -200  200
2     1      800  800
2     2     -600  200 
2     3     -800 -600

我正在使用SQL Server 2008

2 个答案:

答案 0 :(得分:1)

尝试SUM() OVER

SELECT  
      item, 
      week, 
      amount,
      SUM(amount) over (partition by item order by Week) as Total
FROM yourTable

答案 1 :(得分:1)

您需要一个SQL Server 2012来支持ROWS PRECEDING个功能。

SELECT  
  item, 
  week, 
  amount,
  SUM(amount) over (partition by item order by Week
       ROWS UNBOUNDED PRECEDING
  ) as Total
FROM yourTable

http://stevestedman.com/2012/03/rows-preceding-and-following-in-tsql-2012/