带窗口函数的CASE语句

时间:2018-03-02 14:13:42

标签: sql case window-functions

表格

Table

有人可以协助我正在寻找一个解决方案,以便为每个商店项目对获得正确的计数。 第一个计数很简单

COUNT (*) OVER(PARTITION BY store ORDER BY s.deptitemcode DESC) StoreItemSeqNo

然而,对于第二个计数,如果标志为假,如果每个商店项目对的标志为真,我只想要计数,如果没有先前的值应该为零,则计数应该是先前的值。

参见表格示例

1 个答案:

答案 0 :(得分:2)

聚合函数代替*也可以表达式。如果为表达式调用COUNT(..)而不是*,则会计算除NULL之外的所有内容。所以,根据flag计算:

COUNT (CASE WHEN flag = 1 THEN flag ELSE NULL END) OVER(PARTITION BY store ORDER BY s.deptitemcode DESC) StoreItemSeqNo