Donc, vous voulez trouver des séquences en fonction de la date qui sont identiques.
Voici une astuce :si vous faites la différence entre row_number()
sur tout le groupe et row_number()
partitionné par code
, alors il sera constant pour les lignes adjacentes avec le même code. Le reste n'est que de l'agrégation :
select min(date), max(date), code
from (select t.*,
(row_number() over (order by date) -
row_number() over (partition by code order by date)
) as grpid
from followingdata t
) t
group by grpid, code;