У меня есть этот запрос T-SQL
WITH CTE AS
(
SELECT
m.Season AS 'Season',
SUM(bi.Runs) AS 'Runs',
p.LastName + ' ' + SUBSTRING(p.FirstName, 1, 1) AS 'PlayerName'
FROM Player p
JOIN BatInnings bi on bi.fk_Player_Id = p.id
JOIN Innings i on i.Id = bi.fk_Innings_Id
JOIN Team t on t.id = i.fk_Team_Id
JOIN Match m on m.id = i.fk_Match_Id
WHERE
(p.id = @playerId OR @playerId IS NULL)
AND m.MatchType IN (@matchType1, @matchType2, @matchType3)
AND (i.fk_Team_Id = @teamId OR @teamId IS NULL)
AND (t.fk_Club_Id = @clubId OR @clubId IS NULL)
GROUP BY
m.season, p.LastName + ' ' + SUBSTRING(p.FirstName, 1, 1)
)
SELECT CTE.*
FROM CTE
WHERE CTE.Runs = (SELECT MAX(CTE2.Runs)
FROM CTE CTE2
WHERE CTE2.Season = CTE.Season)
ORDER BY CTE.Season
Это вытягивает список, основанный на самом высоком балле пробегов для каждого сезона. Результат будет выглядеть следующим образом.
Season Runs Player
1990/91 689 Todd D
1991/92 617 Grantham N
1992/93 838 Todd D
1993/94 532 Todd D
1994/95 628 Todd D
1995/96 584 Downer M
1996/97 743 Todd D
1997/98 742 Brown S
1998/99 841 Todd D
1999/00 902 Hart M
Я хочу продолжить этот запрос, чтобы затем вытащить, где каждая запись выше, чем предыдущая выбранная. Таким образом, используя предыдущий список, результаты этого запроса будут выглядеть как
Season Runs Player
1990/91 689 Todd D
1992/93 838 Todd D
1998/99 841 Todd D
1999/00 902 Hart M
Рад предоставить больше информации, если требуется.
Спасибо