使用ROW_NUMBER应用分组排名

时间:2012-03-12 18:38:28

标签: sql-server sql-server-2008 sql-server-2005 tsql sql-server-2008-r2

我正在寻找为表格分配行号的方法

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(),它不起作用。对这个世界的任何投入都很棒:)

谢谢!!!!

1 个答案:

答案 0 :(得分:3)

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() ...