【发布时间】:2019-01-20 01:53:28
【问题描述】:
在研究我的 CASE 表达式问题的答案时,我找不到我想要的东西。目的是对“活动”帐户的出现次数进行求和。但是,在查看结果后,我不想将活动帐户上的一组参数包含在我的 SUM 值中。这是原始的 SUM CASE:
sum(
CASE
WHEN (type_txt = 'ACCOUNT'::text AND status = 'ACTIVE' THEN 1
ELSE 0
END) AS accounts_actv
但是,我重新编写了代码,以便在不应计算活动帐户的特殊情况下计算:
sum(
CASE
WHEN (type_txt = 'ACCOUNT' AND status = 'ACTIVE' THEN 1
WHEN (type_txt = 'ACCOUNT' AND status = 'ACTIVE' AND code = 483 AND open_date < CURRENT_DATE) THEN 0
ELSE 0
END) AS accounts_actv
我认为,THEN 1 ELSE 0 不能有 THEN 条件为 0 ---- 所以我想弄清楚如何在 SUM 中不包含这种类型的帐户
【问题讨论】:
-
count(*) filter (where ....)可能更容易阅读
标签: sql postgresql expression case