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

MS SQL查询:按规则获取每位学生对应的唯一学习资格记录

MS SQL 学生学习资格单条记录查询实现

你可以通过ROW_NUMBER()窗口函数实现需求,该写法性能优异,可完美匹配你提出的3条筛选规则,具体查询代码如下:

WITH RankedEntitlements AS (
    SELECT 
        studentId,
        studentName,
        entitlementId,
        entitlementEndDate,
        ROW_NUMBER() OVER (
            PARTITION BY studentId 
            ORDER BY entitlementEndDate DESC, entitlementId DESC
        ) AS row_rank
    FROM -- 此处替换为你的实际表名
        student_entitlement
)
SELECT 
    studentId,
    studentName,
    entitlementId,
    entitlementEndDate
FROM RankedEntitlements
WHERE row_rank = 1

规则匹配说明

  • 学生仅存在1条资格记录时,row_rank值默认为1,直接返回该记录,满足规则1
  • 学生有多条记录时,排序逻辑优先按entitlementEndDate倒序,最远到期时间的记录排在第一位,满足规则2
  • 多条记录到期时间同为最大值时,次级排序按entitlementId倒序,id最大的记录排在第一位,满足规则3

示例数据验证

针对你给出的示例数据,该查询返回结果如下,完全匹配预期:

studentIdstudentNameentitlementIdentitlementEndDate
100Aaron A2006002021-12-31
200Charlie C4009002022-01-31
300Frank F5001002022-09-31

如果你的表数据量较大,建议在studentId、entitlementEndDate、entitlementId三个字段上建立联合覆盖索引,可进一步提升查询性能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 18:36:03