Il s'agit d'un type de problème de lacunes et d'îlots. Il est résoluble même dans les anciens logiciels non pris en charge comme SQL Server 2005, car cette version a row_number()
.
Une astuce consiste à convertir l'identifiant de l'heure en un bona fide date/heure. L'autre astuce consiste à définir les groupes en soustrayant un nombre séquentiel de mois de la valeur date/heure :
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);
ici est un db<>violon.