使用排名更新结果集

Ste*_*anE 6 t-sql

考虑这个表:

create table t (EventId    int
               ,Section    int
               ,PlayerName nvarchar(50)
               ,Score      int
               ,Rank       int
               )
Run Code Online (Sandbox Code Playgroud)

我试图写T-SQL确实有EVENTID作为输入,并使用该RANK功能由得分排名,但与部分分离(在每一节等等级个别每个部分,1级为最高分),然后设置/更新Rank值

kev*_*v22 12

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
Run Code Online (Sandbox Code Playgroud)

这里是上SEDE运行.

  • 工作完美,希望我能给你不止一票! (3认同)