2011-11-15 17 views
5

Considerando questa tabella:Aggiornamento di risultati con rango

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

I che prova a scrivere il T-SQL che ha EventId come input e utilizzando la funzione RANK per classificare il punteggio ma con sezioni separate (Classifica individuale per ogni sezione, Grado 1 per punteggio più alto in ogni sezione e così via) e quindi impostando/aggiornare il valore di rango

risposta

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 è in esecuzione SEDE.

+3

Lavoro perfetto, vorrei poterti dare più di un voto! – StefanE

+0

@StefanE il tuo desiderio si è avverato: P –

Problemi correlati