Sie möchten also Sequenzen nach Datum finden, die gleich sind.
Hier ist ein Trick:Wenn Sie den Unterschied zwischen row_number()
nehmen über die gesamte Gruppe und row_number()
partitioniert nach code
, dann ist es für benachbarte Zeilen mit demselben Code konstant. Der Rest ist nur Aggregation:
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;