我在select语句中使用CASE WHEN来计算条件为真的记录数:
COUNT(CASE WHEN CAST(EVENT_TIMESTAMP AS DATE)
- CONTRACT_EFFECTIVE_DATE = 1 THEN 1 END) AS "1 day",
工作正常。
现在我尝试应用相同的条件,但要将列中的值相加为真,而不是计算记录。这是我尝试过的:
(CASE WHEN CAST(EVENT_TIMESTAMP AS DATE)
- CONTRACT_EFFECTIVE_DATE = 0 THEN SUM(DWELL_MINUTES) END) AS "0 day",
但是这给出了错误“选定的非聚合必须是相关组的一部分”。
我尝试了一些更多的变化而没有成功。
在CAST(EVENT_TIMESTAMP AS DATE) - CONTRACT_EFFECTIVE_DATE = 0
?
答案 0 :(得分:4)
您需要将原始查询中的聚合函数从COUNT
更改为SUM
:
SUM(CASE WHEN CAST(EVENT_TIMESTAMP AS DATE) -
CONTRACT_EFFECTIVE_DATE = 0 THEN DWELL_MINUTES END) AS "0 day"
答案 1 :(得分:4)
反过来做,就像用COUNT一样。对每条记录进行评估并汇总结果:
SUM(CASE WHEN CAST(EVENT_TIMESTAMP AS DATE)
- CONTRACT_EFFECTIVE_DATE = 0 THEN DWELL_MINUTES END) AS "0 day",