Dysponuje zapytaniem, które pokazuje mi wyniki z zawodów posortowane względem czasu który uzyskali na punktach pomiarowych.
Czy istnieje sposób w SQL wyznaczenie klasyfikacji końcowej ale tylko dla tych wartości gdzie np. Lap = 2. oraz wyznaczenie klasyfikacji końcowej ze względu na płeć zawodnika. Poniżej przedstawiam wynik zapytania które posiadam.
W skrócie:
- LP. to liczba porzadkowa wszystkich "odczytów" zawodnika na punkcie pomiarowym
- MSC OPEN to miejsce open w całych zawodach. To miejsce open powino się uzupełniać tylko w momencie gdy kolumna "Lap" ma wartość np. 1 (jest to czas brutto w tym przypadku, lap 2 to czas netto)
- MSC M - wyznacza klasyfikację uwzględniając pleć zawodnika oraz wartość w Lap np. 1
- MSC K - jak wyżej tylko, że u kobiet
Te wszystkie wyniki, które mi się wyświetlają chciałbym je widzeć ale ranking się uzupełnia tylko w momencie gdy spełnione są warunki.
Czy w ogóle da się takie coś zrobić??
Select
ROW_NUMBER() OVER(ORDER BY Czas) AS 'Lp.',
ROW_NUMBER() OVER(ORDER BY Czas) AS 'MSC OPEN' ,
NrStartowy.Nr_startowy,
Zawodnicy.imie,
Zawodnicy.nazwisko,
Zawodnicy.plec,
ROW_NUMBER() OVER(PARTITION BY Zawodnicy.plec ORDER BY Czas) AS 'MSC M' ,
ROW_NUMBER() OVER(PARTITION BY Zawodnicy.plec ORDER BY Czas) AS 'MSC K' ,
CONVERT(varchar(50),Wyniki.Czas,14) as Czas,
Wyniki.Lap
FROM [Gepard_2].[dbo].[Runners] as Zawodnicy
RIGHT JOIN
[Gepard_2].[dbo].[ReadingTimes_Converted_Brutto] as Wyniki
ON Zawodnicy.Tag_id = Wyniki.Tag_Id and Zawodnicy.zawody_id = '326'
inner JOIN
[Gepard_2].[dbo].[Tags] as NrStartowy
ON Zawodnicy.Tag_id = NrStartowy.[id]
inner JOIN
[Gepard_2].[dbo].Zawody as Zawody
ON NrStartowy.Zawody_id = Zawody.Id
where Zawody.Active ='1'
order by Wyniki.Czas desc
