SQL查询“累计值”

时间:2012-08-09 01:02:03

标签: sql tsql sql-server-2008-r2 running-total

  

可能重复:
  Calculate a Running Total in SqlServer

我是SQL新手。这个问题似乎很基本,但我找不到答案,也许我没有找到合适的关键字。

在SQL server 2008 R2中,我有一个这样的表:

Date      Value
---------------
2012-1-1    100
2012-1-2     50
2012-1-4    200

我想创建一个具有累计值的视图,如下所示:

Date      Total
---------------
2012-1-1    100
2012-1-2    150
2012-1-4    350

我该怎么办?

2 个答案:

答案 0 :(得分:2)

这应该得到总计。试试这个:

SELECT dateHere,
       total,
       total + COALESCE(
                         (
                            SELECT SUM(total)
                            FROM myTable b
                            WHERE b.dateHere < a.dateHere
                          ), 0) AS RunningTotal
FROM     myTable a
ORDER BY dateHere

SQLFiddle Demo

答案 1 :(得分:1)

以下是使用相关子查询执行此操作的一种方法:

select t.date, t.value,
       (select sum(t2.value)
        from t t2
        where t2.date <= t.date
       ) as cumvalue
from t