Dense_rank在SQL Server中的排名不正确

问题描述 投票:1回答:1
SELECT DISTINCT
    ID, Version_Number,
    DENSE_RANK() OVER (PARTITION BY ID ORDER BY id, version_number DESC) AS Recency
FROM 
    table 
WHERE
    ID = '41710288'

以下是我得到的错误结果:

ID         Version_Number   Recency
------------------------------------
41710288    10               2
41710288     9               1

正确的结果应该是

ID        Version_Number    Recency
------------------------------------
41710288    10               1
41710288     9               2

[我知道您可能会建议我将顺序从ASC更改为DESC。但这不是真正的问题。

我已验证并确认此脚本可正常用于所有其他记录,除了少数具有version_number 10和9的记录。在version_number为10和9的所有记录中,我都遇到此问题。

您能帮我吗?

sql sql-server dense-rank
1个回答
0
投票

version_number()似乎是一个字符串。尝试转换它:

    dense_rank() OVER (PARTITION BY ID
                       ORDER BY id, TRY_CONVERT(int, version_number) DESC
                      ) AS Recency
© www.soinside.com 2019 - 2024. All rights reserved.