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

如何用SQL查询每个case_id对应最新日期的案件记录?

获取每个case_id对应最新date_level_assigned记录的SQL实现

你原来的SQL只是对所有记录按case_id和日期倒序排序,会返回全量数据,但没法直接筛选出每个case_id的最新那条记录。下面提供两种实用的实现方式:

方法一:聚合函数+关联查询

先通过子查询得到每个case_id的最新日期,再关联原表拿到完整记录:

SELECT t.case_id, t.level, t.date_level_assigned
FROM table t
INNER JOIN (
    SELECT case_id, MAX(date_level_assigned) AS max_date
    FROM table
    GROUP BY case_id
) t_max 
ON t.case_id = t_max.case_id AND t.date_level_assigned = t_max.max_date;

这种方式先按case_id分组,用MAX(date_level_assigned)拿到每组的最新日期,再通过case_id和日期匹配,从原表中取出对应的level等字段。

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

利用窗口函数给每个case_id组内的记录编号,直接筛选出最新的那条:

SELECT case_id, level, date_level_assigned
FROM (
    SELECT 
        case_id, 
        level, 
        date_level_assigned,
        ROW_NUMBER() OVER (PARTITION BY case_id ORDER BY date_level_assigned DESC) AS rn
    FROM table
) t
WHERE rn = 1;
  • PARTITION BY case_id:将数据按case_id分组
  • ORDER BY date_level_assigned DESC:每组内按日期倒序排列,最新的日期排在最前
  • ROW_NUMBER():给每组的记录依次编序号,最新的记录序号为1
    如果同一case_id存在多条日期相同的最新记录,想全部保留的话,可以把ROW_NUMBER()换成RANK()或DENSE_RANK()。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 09:41:32