使用sum函数和基于返回值的条件

时间:2013-07-13 20:34:04

标签: sql where-clause

我有一套给定月份与每个月相关的小时数

DATE          HOURS
8/1/2013      3
9/1/2013      8
10/1/2013     2
11/1/2013     4
12/1/2013     1  

我需要返回过去所有内容的小时数,包括当前月份,在下面的例子中,从8月开始,总和只是8月。对于九月,我需要八月+九月

DATE          HOURS     SUM
8/1/2013      3         3
9/1/2013      8         11
10/1/2013     2         13
11/1/2013     4         17
12/1/2013     1         18

我不知道如何继续,因为每行的日期条件不同。

如果有人可以提供帮助,我们将不胜感激

1 个答案:

答案 0 :(得分:1)

您可以使用相关子查询(或非等值连接,但我发现子查询更清晰)在大多数SQL方言中执行此操作:

select date, hours,
       (select sum(t2.hours)
        from t t2
        where t2.date <= t.date
       ) as cum
from t;

许多SQL引擎也支持累积和函数,通常如下所示:

select date, hours sum(hours) over (order by date) as cum
from t