0

我有一组给定的月份,每个月份都有几个小时

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

我不确定如何继续,因为每行的日期条件都不同。

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

4

1 回答 1

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
于 2013-07-13T20:37:13.173 回答