Sie können Folgendes verwenden:
SELECT Team, TotalWins, FirstWin, LastWin
FROM ( SELECT Team,
WL,
COUNT(*) TotalWins,
MIN("Date") FirstWin,
MAX("Date") LastWin,
ROW_NUMBER() OVER(PARTITION BY Team, WL ORDER BY COUNT(*) DESC) RowNumber
FROM ( SELECT Team,
"Date",
WL,
ROW_NUMBER() OVER(PARTITION BY Team ORDER BY "Date") - ROW_NUMBER() OVER(PARTITION BY Team, WL ORDER BY "Date") Grouping
FROM T
) GroupedData
WHERE WL = 'W'
GROUP BY Team, WL, Grouping
) RankedData
WHERE RowNumber = 1;
Es verwendet ROW_NUMBER, um jedes Spiel nach Team und auch nach Ergebnis zu ordnen, wobei der Unterschied zwischen diesen beiden für jede Gruppe aufeinanderfolgender Ergebnisse eindeutig ist. Für dein erstes Team hättest du also:
Team Date W/L RN1 RN2 DIFF
Team_1 04/01/0012 W 1 1 0
Team_1 06/01/0012 W 2 2 0
Team_1 07/01/0012 L 3 1 2
Team_1 14/01/0012 W 4 3 1
Team_1 19/01/0012 W 5 4 1
Team_1 30/01/0012 L 6 2 4
Team_1 14/02/0012 W 7 5 2
Team_1 17/02/0012 L 8 3 5
Team_1 20/02/0012 W 9 6 3
Wobei RN1 nur nach Team partitioniert ist und rn2 nach Team und Ergebnis partitioniert ist.
Wie Sie sehen können, erhöht sich die DIFF-Spalte um eins für jede Gruppe aufeinanderfolgender Siege, wenn Sie die Verluste entfernen:
Team Date W/L RN1 RN2 DIFF
Team_1 04/01/0012 W 1 1 0
Team_1 06/01/0012 W 2 2 0
---------------------------------------
Team_1 14/01/0012 W 4 3 1
Team_1 19/01/0012 W 5 4 1
---------------------------------------
Team_1 14/02/0012 W 7 5 2
---------------------------------------
Team_1 20/02/0012 W 9 6 3
Sie können dann danach gruppieren, um sicherzustellen, dass Sie aufeinanderfolgende Gewinne sehen, und zählen, um das Beste herauszuholen. Ich habe dann einfach eine andere Zeilennummer verwendet, um die maximalen aufeinanderfolgenden Siege pro Team zu erzielen.