Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Vergleiche die n-te Zeile mit der n+1-ten Zeile und wenn sie im Bereich der n-ten Zeile liegt, drucke die n+1-Zeile USNG ORACLE QUERY

Hier ist eine Lösung mit LAG Funktion oder Oracle, die Ihnen Zugriff auf die vorherige Zeile gibt.

Und Sie sollten gemäß Ihren Anforderungen nur Zeile 2 und 5 aus Ihrer Tabelle erhalten, da Zeile 6 end_no hat als 224, was nicht kleiner als end_no ist von Zeile5, die 223 ist

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;