Oracle
 sql >> Database >  >> RDS >> Oracle

Confronta n-esima riga con n+1 a riga e se si trova nell'intervallo di n-esima riga stampa n+1 riga USNG ORACLE QUERY

Ecco una soluzione che utilizza LAG funzione o Oracle, che ti dà accesso alla riga precedente.

E dovresti ottenere solo le righe 2 e 5 dalla tua tabella, secondo i requisiti che hai, poiché la riga 6 ha end_no come 224, che non è inferiore a end_no di riga5 che è 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;