Для каждой игры считайте игры с тем же результатом, который был до него, так что между ними нет игр с противоположным результатом. Сохраните результаты во временной таблице:
CREATE TEMPORARY TABLE STREAK_TABLE
SELECT
ID,
(
SELECT 1 + COUNT(*) -- Earlier games with the same result, team and season.
FROM YOUR_TABLE T2
WHERE
T1.Result = T2.Result
AND T1.team = T2.team
AND T1.season = T2.season
AND T1.date > T2.date
AND NOT EXISTS (
SELECT * -- The games in between, with the same team and season but opposite result.
FROM YOUR_TABLE T3
WHERE
T2.Result <> T3.Result
AND T1.team = T3.team
AND T1.season = T3.season
AND T3.date BETWEEN T2.date AND T1.date
)
) S
FROM YOUR_TABLE T1
Затем обновите исходную таблицу (и устраните проигрышные полосы в процессе):
UPDATE YOUR_TABLE
SET streak = (
SELECT CASE Result WHEN 'Win' THEN S ELSE -S END
FROM STREAK_TABLE
WHERE STREAK_TABLE.ID = YOUR_TABLE.ID
)
Наконец, очистите временную таблицу:
DROP TABLE STREAK_TABLE