【问题标题】:Editing Count(CASE WHEN to sum an Aggregate Value编辑计数(CASE WHEN 汇总汇总值
【发布时间】:2014-06-26 12:10:57
【问题描述】:

我在我的选择语句中使用 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 中包含的值求和?

【问题讨论】:

    标签: sql case teradata


    【解决方案1】:

    您需要将原始查询中的聚合函数从COUNT 更改为SUM

    SUM(CASE WHEN CAST(EVENT_TIMESTAMP AS DATE) - 
                  CONTRACT_EFFECTIVE_DATE = 0 THEN DWELL_MINUTES END) AS "0 day"
    

    【讨论】:

    • 感谢您的回答。接受@Thorsten 只是因为先到了那里
    • @DougFirr 你接受这个答案没问题,因为它是正确的。但是您应该更详细地查看答案的时间戳
    【解决方案2】:

    反之亦然,就像 COUNT 一样。对每条记录进行评估并汇总结果:

    SUM(CASE WHEN CAST(EVENT_TIMESTAMP AS DATE) 
         - CONTRACT_EFFECTIVE_DATE = 0 THEN DWELL_MINUTES END) AS "0 day", 
    

    【讨论】:

    • 感谢您接受我的回答,但实际上 Lamak 更快,所以您应该接受他的回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-24
    • 2017-12-27
    • 1970-01-01
    相关资源
    最近更新 更多