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

SQL Server中如何查询每个Class ID对应的最小考试日期

SQL Server 分组取最小日期对应记录解决方案

  • 以下示例默认分组字段为表中的ID字段,如果你实际需要分组的是单独的Class ID字段,替换PARTITION BY和GROUP BY后的字段名即可。

方案1:窗口函数实现(推荐)

场景A:同分组下最小日期对应多条记录时全部保留

使用RANK()排名函数:

WITH RankedRecords AS (
    SELECT 
        ID,
        Date,
        Subject,
        RANK() OVER (PARTITION BY ID ORDER BY Date ASC) AS DateRank
    FROM 你的表名
)
SELECT ID, Date, Subject
FROM RankedRecords
WHERE DateRank = 1;

场景B:同分组下最小日期对应多条记录时仅保留1条

使用ROW_NUMBER()排名函数即可:

WITH RankedRecords AS (
    SELECT 
        ID,
        Date,
        Subject,
        ROW_NUMBER() OVER (PARTITION BY ID ORDER BY Date ASC) AS DateRank
    FROM 你的表名
)
SELECT ID, Date, Subject
FROM RankedRecords
WHERE DateRank = 1;

方案2:子查询关联实现(适配低版本SQL Server)

如果使用的是不支持CTE语法的老旧SQL Server版本,可以用关联子查询实现,效果和RANK()一致,最小日期对应多条时全部返回:

SELECT t1.ID, t1.Date, t1.Subject
FROM 你的表名 t1
INNER JOIN (
    SELECT ID, MIN(Date) AS MinDate
    FROM 你的表名
    GROUP BY ID
) t2 ON t1.ID = t2.ID AND t1.Date = t2.MinDate;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 18:27:02