Du vil identificere grupper af tilstødende værdier. En metode er at bruge lag()
for at finde begyndelsen af sekvensen, derefter en kumulativ sum for at identificere grupperne.
En anden metode er forskellen på rækkenummer:
select value, min(id) as from_id, max(id) as to_id
from (select t.*,
(row_number() over (order by id) -
row_number() over (partition by val order by id
) as grp
from table t
) t
group by grp, value;