2011-11-15 13 views
5

Biorąc pod uwagę tę tabelę:Aktualizacja resultset z ranga

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

ja próbuje pisać T-SQL, który ma eventid jako wejście i korzystanie z funkcji RANK oceniającym przez wynik lecz sekcje oddzielone (Ranking indywidualny dla każdej sekcji, Rank 1 dla najwyższy wynik w każdej sekcji i tak dalej), a następnie ustawienia/aktualizacja wartości PageRank

Odpowiedz

11
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 

Here jest uruchomiony na SEDE.

+3

Działa doskonale, chciałbym dać ci więcej niż jeden głos! – StefanE

+0

@StefanE Twoje życzenie się spełniło: P –