Я пытаюсь получить отдельные статистические данные из системы учета результатов.В сущности, команды запланированы на матчи
Match
---------
Matchid (uniqueidentifier)
SessionId (int)
WeekNum (int)
Эти матчи разбиты на сеты, в которых два отдельных игрока из команды играют друг с другом
MatchSet
-----------
SetId (int)
Matchid (uniqueidentifier)
HomePlayer (int)
AwayPlayer (int)
WinningPlayer (int)
LosingPlayer (int)
WinningPoints (int)
LosingPoints (int)
MatchEndTime (datetime)
Чтобы разрешить отсутствие игроковигрокам разрешено играть дважды за матч.Очки из каждого сета будут учитываться для итогов их команд, но для отдельных наград учитывается только первый раз, когда игрок играет.
Я пытался использовать CTE для нумерации строк
;WITH cte AS
(
SELECT *,
ROW_NUMBER() OVER (PARTITION BY MatchId ORDER BY MatchEndTime) AS rn
FROM
(SELECT
SetId, MS.MatchId, WinningPlayer, LosingPlayer,
HomePlayer, AwayPlayer, WinningPoints, LosingPoints, MatchEndTime
FROM
MatchSet MS
INNER JOIN
[Match] M ON M.MatchId = MS.MatchId AND M.[Session] = @SessionId
)
, но я изо всех сил, так как игрок может быть либо домашним игроком, либо игроком на выезде в данном сете (также может быть победителем или проигравшим)
В идеале,этот результат затем можно объединить на основе WinningPlayer или LosingPlayer обратно в таблицу игроков, что позволило бы мне получить список отдельных позиций