我搜索了论坛,但找不到我想要的东西。如果已经回答,请道歉。
我有一个包含以下示例值的表:
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
方法做过类似的事情,但我不能让它在这个数据集上工作。任何指针都将非常感激。
答案 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;