我有下表

Year1 Year2 Value
2014 2014 1
2014 2014 2
2014 2015 3
2014 2016 4
2015 2015 5
2015 2016 6
2015 2017 7
2015 2017 8

我需要编写一个SQL查询来提供以下信息:

Year1 Year2 Value
2014 2014 3
2014 2015 6
2014 2016 10
2015 2015 5
2015 2016 11
2015 2017 26

group by可以帮助对year1和year2进行分组,但我的问题是过go 聚合的累积结果.

推荐答案

首先在组中聚合,然后使用窗口聚合:

WITH CTE AS(
    SELECT Year1,
           Year2,
           SUM([Value]) AS [Value]
    FROM dbo.YourTable
    GROUP BY Year1,
             Year2)
SELECT Year1,
       Year2,
       SUM([Value]) OVER (PARTITION BY Year1 ORDER BY Year2) AS [Value]
FROM CTE;

Sql相关问答推荐

SQL(PostgreSQL)从条件创建点表

出现5次后,将所有正斜杠替换为连字符

使用`lag()`获取上一个时间戳

SQL -滞后于上一个非重复值

编写一个SQL查询来返回收视率较高的类型,并取这些收视率的平均值,我该如何做呢?

在数据库中搜索列

获得第三名或最老的记录

将Dense_RANK列为聚合(非解析)函数(&A)

SQL计数条目大于日期,包括交叉表中的零

关于Postgres横向联接的谓词

同一表的Oracle SQL更新(含YTD合计)

两个月之间的WHERE CASE WHEN-ORA-00905:缺少关键字

VS代码无法识别SQL代码中带括号的字符串

Postgresql 生成器列导致语法错误

如何根据 Google BigQuery 中的特定列值连接一列的 N 行?

获取多个开始-结束时间戳集之间经过的时间

SQL for Smarties 类型问题:从表中 Select 记录,并对某些值进行分组

在 MS Access VBA 中,如何测量显示查询的时间?

如何对 SQL 表中的连续时间戳进行分组?

在 sql 中合并系列以删除重复项