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
.