gpt4 book ai didi

sql - 带有 THEN 1 THEN 0 ELSE 0 的 PostgreSQL SUM CASE 表达式

转载 作者:行者123 更新时间:2023-11-29 14:29:09 27 4
gpt4 key购买 nike

在研究我的 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 中包含此类帐户

最佳答案

CASE 返回第一个(从上到下)THEN 表达式的值,该表达式的 WHEN 表达式的计算结果为 true (和 ELSE 如果没有匹配)。由于您的第一个 WHEN 在第二个为真的情况下也为真,因此选择第一个而不是第二个。在 CASE 中,始终将较窄的 WHEN 放在较窄的之前。

CASE
WHEN (type_txt = 'ACCOUNT' AND status = 'ACTIVE' AND code = 483 AND open_date < CURRENT_DATE) THEN 0
WHEN (type_txt = 'ACCOUNT' AND status = 'ACTIVE' THEN 1
ELSE 0
END

关于sql - 带有 THEN 1 THEN 0 ELSE 0 的 PostgreSQL SUM CASE 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54272919/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com