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;