2011-11-15 23 views
5

Teniendo en cuenta esta tabla:de resultados Actualización con rango

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

que tratar de escribir el T-SQL que tiene EventId como entrada y utilizando la función RANK para clasificar por la puntuación pero con las secciones separadas (clasificación individual para cada sección, Rango 1 para mayor puntuación en cada sección y así sucesivamente), y luego poner/actualizar el valor Rango

Respuesta

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 se está ejecutando en la SEDE.

+3

¡Trabajando perfecto, ojalá pudiera darle más de un voto! – StefanE

+0

@StefanE su deseo se hizo realidad: P –

Cuestiones relacionadas