编辑计数(CASE WHEN汇总总值

时间:2014-05-08 21:36:41

标签: sql case teradata

我在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

时,如何对DWELL_MINUTES中包含的值求和?

2 个答案:

答案 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",