martes, 8 de mayo de 2018

LAG y LEAD en Oracle

Tenemos que relacionar un registro con su anterior o su posterior en una sola sentencia y devolver ese registro también.

Estas dos funciones “LAG y LEAD” lo permiten sin tener que realizar una self join.

LAG() devuelve el valor de la anterior fila y LEAD() el valor de la siguiente fila.

SELECT DNI,
LEAD(DNI) OVER (ORDER BY DNI) POSTERIOR,
LAG(DNI) OVER (ORDER BY DNI) ANTERIOR
FROM PRUEBA;

DNI     POSTERIOR    ANTERIOR         
0001          0002                                 
0002          0003               0001             
0003          0004               0002             
0004          0005               0003             
0005          0006               0004             
0006          0007               0005