Dette er en form for huller-og-øer-problem. Det er løseligt selv i ikke-understøttet gammel software som SQL Server 2005, fordi den version har row_number()
.
Et trick er at konvertere tids-id'et til en bona fide dato tid. Det andet trick er at definere grupperne ved at trække et sekventielt antal måneder fra dato/tidsværdien:
select player, team, min(timeid), max(timeid)
from (select lp.*,
row_number() over (partition by player, team order by timeid) as seqnum,
cast(cast(timeid + 1 as varchar(255)) as datetime) as yyyymm
from logplayer lp
) lp
group by player, team, dateadd(month, - seqnum, yyyymm)
order by player, team, min(timeid);
Her er en db<>violin.