Sql server 2012 对项目进行排序的SQL查询

Sql server 2012 对项目进行排序的SQL查询,sql-server-2012,Sql Server 2012,我有一个数据集,其中我需要按分数列对行进行排序。显而易见的答案是使用行编号(): 但有一个陷阱。如果两个记录有相同的分数,那么它们必须有相同的排名,并且在它们之后的记录必须向后跳以反映它们的自然顺序,例如 ID Name Score Rank --- ---- ----- ---- 13 Fred 47 1 77 Bob 36

我有一个数据集,其中我需要按分数列对行进行排序。显而易见的答案是使用
行编号()

但有一个陷阱。如果两个记录有相同的分数,那么它们必须有相同的排名,并且在它们之后的记录必须向后跳以反映它们的自然顺序,例如

ID      Name        Score       Rank
---     ----        -----       ----    
13      Fred        47          1   
77      Bob         36          2   
88      Harry       36          2
10      John        23          4   
最好的方法是什么?

试试这个

选择ID、名称、分数、排名()作为排名(按分数划分顺序按分数描述)
从MyTable中

使用rank或dense_rankWell。。。这很简单。谢谢,欢迎来到Stackoverflow,Dhaval!为了未来谷歌的利益,请参见MSDNBTW,不要“按分数划分”;这将为每一个新分数重新设置等级。
ID      Name        Score       Rank
---     ----        -----       ----    
13      Fred        47          1   
77      Bob         36          2   
88      Harry       36          2
10      John        23          4