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

Compare a nª linha com n+1ª linha e se estiver no intervalo da nª linha imprima n+1 linha USNG ORACLE QUERY


Aqui está uma solução usando LAG função ou Oracle, que lhe dá acesso à linha anterior.

E você deve obter apenas as linhas 2 e 5 da sua tabela, de acordo com os requisitos que você possui, pois a linha 6 tem end_no como 224, que não é menor que end_no da linha5 que é 223
SELECT id, name, start_no, end_no 
FROM (
    SELECT id, name, start_no, end_no, 
           lag(start_no, 1, 0) over (order by id) prev_start_no ,
           lag(end_no, 1, 0) over (order by id) prev_end_no
    FROM test
) 
WHERE start_no BETWEEN prev_start_no AND prev_end_no
AND end_no BETWEEN prev_start_no AND prev_end_no;