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

Access分组查询问题:获取各Case ID对应最新记录的File ID

解决SQL查询每个Case ID最新记录的问题

问题说明

现有存储入库案件数据的表iktat,包含caseid(Case ID)、FileID(File ID)、date(Date)等字段,需要查询每个caseid对应的最新记录(即date最大的那条),获取其caseid、FileID和date。目前仅能通过分组查询得到caseid和最大日期,但无法关联对应FileID。

现有数据

Case IDFile IDDate
ID000112542022/01/02
ID000106572024/02/02

期望结果

Case IDFile IDDate
ID000106572024/02/02

解决方案

方法1:子查询关联

先通过子查询获取每个caseid的最大日期,再将子查询结果与原表关联,匹配caseid和日期,从而得到对应的FileID:

SELECT i.caseid, i.FileID, i.date
FROM iktat i
INNER JOIN (
    SELECT caseid, MAX(date) AS MaxOfdate
    FROM iktat
    GROUP BY caseid
) sub 
ON i.caseid = sub.caseid AND i.date = sub.MaxOfdate;

方法2:窗口函数(推荐)

使用ROW_NUMBER()窗口函数,按caseid分组,每组内按date降序排序,取排序后编号为1的记录(即最新记录):

SELECT caseid, FileID, date
FROM (
    SELECT 
        caseid, 
        FileID, 
        date,
        ROW_NUMBER() OVER (PARTITION BY caseid ORDER BY date DESC) AS rn
    FROM iktat
) t
WHERE rn = 1;

注意:如果同一个caseid存在多条date相同的最新记录,方法1会返回所有符合条件的记录;方法2默认只返回一条,若需返回全部相同日期的最新记录,可将ROW_NUMBER()替换为RANK()。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 09:43:22