我正在寻找分配表格行号的方法,如下所示

Roll No    Name    Score
 1           ABC    10
 1           ABC    10
 1           DEF     8
 2           ASC     9
 2           YHN     4
 3           IOP     5
 3           YHN     4


我正在寻找一种将卷号分配为Rownumber()的方法

Roll No    Name    Score    Row_Number
 1           ABC    10        1
 1           ABC    10        2
 1           DEF     8        3
 2           ASC     9        1
 2           YHN     4        2
 3           IOP     5        1
 3           YHN     4        2


我正在尝试使用Row_number(),这是行不通的。在这个世界上的投入很大:)

谢谢 !!!!

最佳答案

SELECT [Roll No], Name, Score, [ROW_NUMBER] =
  ROW_NUMBER() OVER (PARTITION BY [Roll No] ORDER BY Score DESC)
FROM dbo.table
ORDER BY [Roll No], [ROW_NUMBER];


如果您以后决定要以其他方式处理关系,请使用RANK()DENSE_RANK()代替ROW_NUMBER()

关于sql-server - 使用ROW_NUMBER应用分组排名,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9672853/

10-12 22:31