sql >> Base de Datos >  >> RDS >> Oracle

Compare la n-ésima fila con la n+1-ésima fila y si se encuentra en el rango de la n-ésima fila imprima n+1 fila USNG ORACLE QUERY

Aquí hay una solución usando LAG función u Oracle, que le da acceso a la fila anterior.

Y solo debe obtener las filas 2 y 5 de su tabla, según los requisitos que tenga, ya que la fila 6 tiene end_no como 224, que no es menor que end_no de fila5 que es 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;