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

Oracle SQL:如何筛选包含最新日期的记录

提取每个id最新日期对应的Y记录

针对需求(从表中获取每个id下DATE为最新值的Y列记录),以下是几种常用的SQL实现方案:

方案1:窗口函数(推荐,支持SQL Server、MySQL 8.0+、PostgreSQL等)

使用ROW_NUMBER()窗口函数按id分组,对每组按DATE降序排序,取排序后第一条记录:

SELECT id, Y, DATE
FROM (
    SELECT 
        id, 
        Y, 
        DATE,
        -- 按id分组,每组内按DATE倒序编号
        ROW_NUMBER() OVER (PARTITION BY id ORDER BY DATE DESC) AS row_num
    FROM your_table
) ranked_data
WHERE row_num = 1;

方案2:子查询关联(兼容低版本MySQL等不支持窗口函数的数据库)

先通过子查询获取每个id的最大日期,再关联原表匹配对应记录:

SELECT t.id, t.Y, t.DATE
FROM your_table t
JOIN (
    -- 分组获取每个id的最新日期
    SELECT id, MAX(DATE) AS latest_date
    FROM your_table
    GROUP BY id
) latest_dates ON t.id = latest_dates.id AND t.DATE = latest_dates.latest_date;

执行结果示例

以上两种方案执行后,都会得到符合需求的结果:

idYDATE
a22022
b12015
c72010

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 22:55:31