聚合具有多个条件的值

时间:2015-07-15 17:28:01

标签: sql tsql sql-server-2012

我搜索了论坛,但找不到我想要的东西。如果已经回答,请道歉。

我有一个包含以下示例值的表:

FY     Period  Version   Value
2013   3       1         9954
2013   3       2         9954
2013   4       1         11498
2013   4       2         11498
2013   4       3         11498
2014   1       1         448
2014   1       2         448
2014   1       3         0
2014   2       1         3150
2014   2       2         3150
2014   3       1         0
2014   3       2         0
2014   3       3         5059
2014   4       1         11118
2014   4       2         0
2014   4       3         11118

我希望在每个时段和每个FY中对最高版本号的值求和,因此该特定数据集的预期结果为:

(9954 + 11498 + 0 + 3150 + 5059 + 11118) = 40,779

我之前使用over partition方法做过类似的事情,但我不能让它在这个数据集上工作。任何指针都将非常感激。

1 个答案:

答案 0 :(得分:3)

一种简单的方法是使用row_number()

select sum(value)
from (select t.*,
             row_number() over (partition by fy, period order by version desc) as seqnum
      from table t
     ) t
where seqnum = 1;