Więc chcesz znaleźć sekwencje według tej samej daty.
Oto sztuczka:jeśli weźmiesz różnicę między row_number()
nad całą grupą i row_number()
podzielone według code
, to będzie stała dla sąsiednich wierszy z tym samym kodem. Reszta to tylko agregacja:
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;