Обновить набор результатов с рангом - PullRequest
6 голосов
/ 15 ноября 2011

Учитывая эту таблицу:

create table t (EventId    int
               ,Section    int
               ,PlayerName nvarchar(50)
               ,Score      int
               ,Rank       int
               )

Я пытаюсь написать T-SQL с EventId в качестве входных данных и использую функцию RANK для ранжирования по баллам, но с разделенными разделами (ранжирование индивидуально для каждого раздела, ранг 1 по наибольшему баллу в каждом разделе и и так далее) и затем установка / обновление значения ранга

1 Ответ

12 голосов
/ 15 ноября 2011
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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...