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

如何用SQL获取每个用户最大ImportDate对应的全部记录?

筛选每个用户最大ImportDate对应的所有记录

要获取每个用户(以firstname+lastname标识)对应最大ImportDate的全部记录,且返回表中所有列(同一日期有多条则全部保留),可以用以下两种常见写法:

方法1:窗口函数RANK()

SELECT *
FROM (
    SELECT *,
           RANK() OVER (PARTITION BY firstname, lastname ORDER BY importdate DESC) AS rnk
    FROM ClmEligibility_Intake
    WHERE lastname = 'james' AND firstname = 'bob'
) t
WHERE rnk = 1;
  • 内层用PARTITION BY按姓名分组,ORDER BY importdate DESC让最大日期排在前面
  • RANK()会给同一分组内最大日期的所有记录标记为排名1,外层筛选rnk=1就能拿到所有符合条件的记录,自动保留原表所有列

方法2:子查询关联原表

SELECT c.*
FROM ClmEligibility_Intake c
JOIN (
    SELECT firstname, lastname, MAX(importdate) AS max_importdate
    FROM ClmEligibility_Intake
    WHERE lastname = 'james' AND firstname = 'bob'
    GROUP BY firstname, lastname
) t ON c.firstname = t.firstname 
   AND c.lastname = t.lastname 
   AND c.importdate = t.max_importdate;
  • 子查询先算出目标用户的最大ImportDate
  • 关联原表匹配姓名和日期,直接返回该日期下的所有完整记录

为什么你之前的聚合查询不生效?

你原来的SELECT MAX(importdate), firstname, lastname GROUP BY写法,本质是按姓名聚合,只能返回一条聚合后的结果(仅包含聚合字段和分组字段),既无法带回ID等其他列,也没办法保留同一最大日期下的多条记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 01:52:07