Hi Tara,this works brillant, thanks a lot! Sometimes it's only using the right words, e.g. 'streaks' instead of 'series'
. I've also modified it a bit as I have 3 criterias so in Jeffs Example it would be Win, Loss and Draw. I'm not an SQL-Expert but at least it works
Feel free to post any improvements!I had to create 2 new columns 'WinDraw' and 'LossDraw' which contain a '1' if the result is a Win or a Draw (or, for LossDraw, which is a Loss ora Draw). These columns are needed later on for grouping. Additionally I have 2 new rungroups, RunGroupLS (Loss or Draw) and RunGroupWD (Win or Draw).SELECT MatchDate, Win, (CASE WHEN Win = 'W' OR Win = 'D' Then 1 ELSE 0 END) as WinDraw, (CASE WHEN Win = 'L' OR Win = 'D' Then 1 ELSE 0 END) as LossDraw, (SELECT COUNT(*) FROM #TempLeagueMatches TL WHERE TL.Win <> TLM.Win AND TL.MatchDate <= TLM.MatchDate) as RunGroup,(SELECT COUNT(*) FROM #TempLeagueMatches TL WHERE TL.Win <> TLM.Win AND TL.MatchDate <= TLM.MatchDate AND NOT ((TL.Win = 'D' and TLM.Win = 'L') OR (TL.Win = 'L' and TLM.Win = 'D') OR TLM.Win = '')) as RunGroupLD,(SELECT COUNT(*) FROM #TempLeagueMatches TL WHERE TL.Win <> TLM.Win AND TL.MatchDate <= TLM.MatchDate AND NOT ((TL.Win = 'D' and TLM.Win = 'W') OR (TL.Win = 'W' and TLM.Win = 'D') OR TLM.Win = '')) as RunGroupWDINTO #Streaks1FROM #TempLeagueMatches TLM -- Comparing only Single Results: W, L or D --SELECT Win, MIN(MatchDate) as StartDate, MAX(MatchDate) as EndDate, COUNT(*) as GamesINTO #Streaks2FROM #Streaks1 AGROUP BY Win, RunGroupORDER BY Min(MatchDate) DESC-- Comparing double Results: Loss or Draw --SELECT LossDraw, MIN(MatchDate) as StartDate, MAX(MatchDate) as EndDate, COUNT(*) as GamesINTO #StreaksLDFROM #Streaks1 AGROUP BY LossDraw, RunGroupLDORDER BY Min(MatchDate) DESC-- Comparing Double results : Wins or Draws --SELECT WinDraw, MIN(MatchDate) as StartDate, MAX(MatchDate) as EndDate, COUNT(*) as GamesINTO #StreaksWDFROM #Streaks1 AGROUP BY WinDraw, RunGroupWDORDER BY Min(MatchDate) DESCSELECT TOP 10 Win, StartDate, EndDate, Games as StreakWinsLeagueFROM #Streaks2 WHERE Win = 'W'ORDER BY Games DESC SELECT TOP 10 Win, StartDate, EndDate, Games as StreakDrawsLeagueFROM #Streaks2 WHERE Win = 'D'ORDER BY Games DESC SELECT TOP 10 Win, StartDate, EndDate, Games as StreakLossesLeagueFROM #Streaks2 WHERE Win = 'L'ORDER BY Games DESC SELECT TOP 10 'WD' as Win, StartDate, EndDate, Games as StreakWinsDrawsLeagueFROM #StreaksWD ORDER BY Games DESC SELECT TOP 10 'LD' as Win, StartDate, EndDate, Games as StreakLossesDrawsLeagueFROM #StreaksLDORDER BY Games DESC