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

MAX函数未过滤结果:如何基于LAST_UPDATED_DATE获取最新TERM_START

问题原因

你原来的SQL里用GROUP BY a.term_start,会把不同的term_start值分成独立分组,每个分组单独计算MAX(LAST_UPDATED_DATE),所以只要存在两个不同的term_start,就会返回两行结果,这和你想要的“只保留最新LAST_UPDATED_DATE对应行”的逻辑不匹配。

解决方案

这里提供两种常用的解决方法:

方法一:子查询先定位最大更新日期

先通过子查询找到符合条件的最大LAST_UPDATED_DATE,再用这个值过滤原表,拿到对应的term_start:

SELECT a.LAST_UPDATED_DATE, a.term_start
FROM table AS a
WHERE a.ID='123456' AND location='Colorado'
AND a.LAST_UPDATED_DATE = (
    SELECT MAX(LAST_UPDATED_DATE)
    FROM table
    WHERE ID='123456' AND location='Colorado'
)

如果有多行数据的LAST_UPDATED_DATE都是最大值,这个方法会返回所有这些行

方法二:窗口函数筛选最新行

用ROW_NUMBER()窗口函数按LAST_UPDATED_DATE降序排序,然后取排序后的第一行:

SELECT LAST_UPDATED_DATE, term_start
FROM (
    SELECT 
        LAST_UPDATED_DATE, 
        term_start,
        ROW_NUMBER() OVER (ORDER BY LAST_UPDATED_DATE DESC) AS rn
    FROM table
    WHERE ID='123456' AND location='Colorado'
) AS sub
WHERE rn = 1

如果要保留所有LAST_UPDATED_DATE为最大值的行,可以把ROW_NUMBER()换成RANK()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 10:17:19