Então, você quer encontrar sequências de acordo com a data que são as mesmas.
Aqui está um truque:se você pegar a diferença entre
row_number()
sobre todo o grupo e row_number()
particionado por code
, então será constante para linhas adjacentes com o mesmo código. O resto é apenas agregação: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;