如何包含行号但显示平局?

Abe*_*ler 4 sql t-sql sql-server sql-server-2008

说我有以下查询:

WITH TEMP AS
  (
     select 1 as id, 4 as value
     UNION
     SELECT 2, 53
     UNION
     SELECT 3, 1
     UNION
     SElECT 4, 474
     UNION
     SELECT 5, 53
  )

  SELECT *,
  ROW_NUMBER() OVER (ORDER BY value)
  FROM TEMP
Run Code Online (Sandbox Code Playgroud)

这将返回以下内容:

3   1   1
1   4   2
2   53  3
5   53  4
4   474 5
Run Code Online (Sandbox Code Playgroud)

我希望两行53和53具有相同的行号(3)和最后一行以保持它的行号5.我假设这不能使用ROW_NUMBER完成.有人能指出我正确的方向让我开始这个吗?

小智 6

而不是使用ROW_NUMBER,你想使用RANK.

  SELECT *,   
      RANK() OVER (ORDER BY value)   
  FROM TEMP
Run Code Online (Sandbox Code Playgroud)

RANK(T-SQL)MSDN参考