Her er en løsning ved hjælp af LAG
funktion eller Oracle, som giver dig adgang til den forrige række.
Og du bør kun få række 2 og 5 fra din tabel, i henhold til de krav du har, da række 6 har end_no
som 224, hvilket ikke er mindre end end_no
af række5, som er 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;