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

使用DENSE_RANK()时同日期排序导致排名异常的技术问询

解决DENSE_RANK对同日期不同来源记录的排名问题

你的问题出在排序条件仅依赖ISNULL([PAYROLL DATE], [PROCESS DATE]),导致所有处理后日期一致的记录(无论原日期来自PAYROLL DATE还是PROCESS DATE)被归为同一排名。要实现期望的排名结果,需要在ORDER BY中增加日期来源的区分规则,让PAYROLL DATE非空的记录优先于PROCESS DATE补位的记录排序,同时保留同来源同日期的记录排名一致。

修改后的查询语句

DENSE_RANK() OVER (PARTITION BY [Plan ID], [EE ID], [Loan Number] 
                   ORDER BY ISNULL([PAYROLL DATE], [PROCESS DATE]) ASC,
                            CASE WHEN [PAYROLL DATE] IS NOT NULL THEN 1 ELSE 2 END ASC)

逻辑说明

  1. 第一排序条件保持你原本的日期处理逻辑,确保整体日期顺序正确
  2. 第二排序条件通过CASE语句标记日期来源:
    • 若PAYROLL DATE不为空,标记为1
    • 否则标记为2
      这会让同处理日期下,PAYROLL DATE的记录排在PROCESS DATE的记录之前
  3. DENSE_RANK()会根据这两级排序规则生成排名,既保证同PAYROLL DATE的记录排名一致,又让PROCESS DATE补位的记录获得更高的独立排名

验证结果

[Plan ID][EE ID][Loan Num][PAYROLL DATE][PROCESS DATE](期望)排名(修改后)排名
ABC1231234111/26/2021NULL11
ABC1231234112/23/2021NULL22
ABC1231234102/18/2022NULL33
ABC1231234102/18/2022NULL33
ABC12312341NULL02/18/202244

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 10:49:50