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