Tsql 使用秩更新结果集

Tsql 使用秩更新结果集,tsql,Tsql,考虑到本表: create table t (EventId int ,Section int ,PlayerName nvarchar(50) ,Score int ,Rank int ) 我试图编写以EventId作为输入的T-SQL,并使用RANK函数按分数进行排名,但各部分是分开的(为每个部分单独排名,为

考虑到本表:

create table t (EventId    int
               ,Section    int
               ,PlayerName nvarchar(50)
               ,Score      int
               ,Rank       int
               )
我试图编写以EventId作为输入的T-SQL,并使用
RANK
函数按分数进行排名,但各部分是分开的(为每个部分单独排名,为每个部分的最高分数排名1,依此类推),然后设置/更新排名值

UPDATE tbl
SET [Rank] = t2.[Rank]
FROM tbl t1
LEFT OUTER JOIN 
(
  SELECT EventId
  , Section
  , PlayerName
  , Score
  , RANK() OVER (PARTITION BY EventId, Section ORDER BY Score desc) as [Rank]
  FROM tbl
) as t2 
  ON t1.EventId = t2.EventId 
  AND t1.Section = t2.Section
  AND t1.PlayerName = t2.PlayerName

它在SEDE上运行。

运行得很好,希望我能给你多投一票@斯蒂芬你的愿望实现了:P