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

Cómo obtener información de registros anteriores

Para extraer Random_1 para la fecha anterior, usaría el LAG() función, así:

select ... ,  lag(t1.random_1) over (order by t1.date_key), .....
from  table1 t1 join table2 t2 on t1.date_key = t2.date_key
...

(y lo mismo para las otras columnas). Tenga en cuenta que el resultado de LAG() será, por supuesto, NULL para la primera fila, ya que no hay un valor "anterior". Si desea algo más para la primera fila, envuelva todo dentro de un COALESCE() .

Además, si tiene id de algún tipo y te unes por id Además, entonces no desea mezclar fechas para diferentes identificaciones. El LAG() funciones (y casi todas las demás funciones analíticas) le permite partition by id además de ordenar por fecha. Puede leer la definición y los ejemplos en la documentación de Oracle .