Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

obter intervalos de valor imutável de uma sequência de números


Você deseja identificar grupos de valores adjacentes. Um método é usar lag() para encontrar o início da sequência e, em seguida, uma soma cumulativa para identificar os grupos.

Outro método é a diferença do número da linha:
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;