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
相关产品推荐
相关产品推荐

