【发布时间】:2019-03-26 05:55:59
【问题描述】:
我正在尝试对带有过滤器的窗口求和。我看到了类似的东西
sum(x) filter(condition) over (partition by...)
但它似乎在 t-sql, SQL Server 2017 中不起作用。
基本上,我想对另一列有条件的最后 5 行求和。
我试过了
sum(case when condition...) over (partition...)
和sum(cast(nullif(x))) over (partition...)。
我尝试使用 where 条件左加入表格以过滤掉条件。
以上所有都将添加当前行起点的最后5个条件。
我想要的是当前行。添加上面满足条件的最后 5 个值。
Date| Value | Condition | Result
1-1 10 1
1-2 11 1
1-3 12 1
1-4 13 1
1-5 14 0
1-6 15 1
1-7 16 0
1-8 17 0 sum(15+13+12+11+10)
1-9 18 1 sum(18+15+13+12+11)
1-10 19 1 sum(19+18+15+13+12)
在上面的例子中,我想要的条件是 1,忽略 0,但“窗口”大小仍然是 5 个非 0 值。
【问题讨论】:
-
什么是日期列,是您给出的日期还是值?
-
日期列是一个日期。
标签: tsql window-functions