You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Snowflake中如何获取两时间列的最大值?

正确实现方式

在Snowflake中,MAX()是聚合函数,用于计算一组行中某列的最大值,无法直接用于单行内多列的取值比较。要实现单行内两列取较大值,你可以使用以下两种方法:

方法1:使用GREATEST()函数

GREATEST()函数专门用于返回多个表达式中的最大值,完美匹配你的需求。由于ANSWERED_ON是NOT NULL约束,即使COMMENTED_ON为NULL,GREATEST()也会直接返回ANSWERED_ON的值(NULL在比较中会被忽略,除非所有参数都是NULL)。

示例SQL:

SELECT 
    ID,
    GREATEST(ANSWERED_ON, COMMENTED_ON) AS LAST_ACTIVITY_TIME
FROM MY_TABLE;

方法2:使用CASE语句

如果需要更明确的逻辑控制,可以用CASE语句手动判断:

示例SQL:

SELECT 
    ID,
    CASE 
        WHEN COMMENTED_ON > ANSWERED_ON THEN COMMENTED_ON
        ELSE ANSWERED_ON
    END AS LAST_ACTIVITY_TIME
FROM MY_TABLE;

当COMMENTED_ON为NULL时,COMMENTED_ON > ANSWERED_ON会返回FALSE,因此会取ANSWERED_ON的值,和GREATEST()效果一致。

内容的提问来源于stack exchange,提问作者Mig82

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 15:50:16