如何在满足某个标准后将行设置为空

时间:2017-10-02 23:28:45

标签: sql postgresql

我正在尝试拥有"累积客户"在前5"累积客户"之后NULL

SUM(Customer) OVER (PARTITION BY Product ORDER BY date DESC) cumulative_customers

Ilustration

最终输出将如下所示:

enter image description here

2 个答案:

答案 0 :(得分:1)

使用CASE表达式:

ELSE

如果缺少customer >= 1部分,则默认为NULL。如果您愿意,也可以拼写出来。

我使用sudo以防万一的值大于1(与您的演示建议不同)。

答案 1 :(得分:0)

如果您不想要子查询,可以使用case执行此操作:

select (case when SUM(Customer) OVER (PARTITION BY Product ORDER BY date DESC) <= 5
             then SUM(Customer) OVER (PARTITION BY Product ORDER BY date DESC)
        end) as cumulative_customers

如果您需要子查询或CTE,Erwin的解决方案也可以使用。