Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comparez la nième ligne avec la n+1 ième ligne et si elle se situe dans la plage de la n ième ligne, imprimez n+1 ligne USNG ORACLE QUERY

Voici une solution utilisant LAG fonction ou Oracle, qui vous donne accès à la ligne précédente.

Et, vous ne devriez obtenir que les lignes 2 et 5 de votre table, selon les exigences que vous avez, puisque la ligne 6 a end_no comme 224, qui n'est pas inférieur à end_no de row5 qui est 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;