首页 > 解决方案 > 如何为相同的值获取相同的 rownumber()

问题描述

如果值在列和中重复,我需要获得相同的行号。对于下表:weekdesc

星期 描述
1 ff
1 ss
1 ss
2 ff
2 ss
4 ff
4 ff
4 ss
4 ss

预期结果是:

星期 描述 行数
1 ff 1
1 ss 2
1 ss 2
2 ff 1
2 ss 2
4 ff 1
4 ff 1
4 ss 2
4 ss 2

标签: sqlsql-servertsqlwindow-functions

解决方案


你想要DENSE_RANK而不是ROW_NUMBER

SELECT Week
     , [Desc]
     , DENSE_RANK() OVER (PARTITION BY Week ORDER BY [Desc]) AS [Rank #]
FROM t

DENSE_RANK并将RANK相同的值分配给按列顺序排列的行。DENSE_RANK此外分配“密集”排名数字而不是“差距”数字。


推荐阅读