Per estrarre Random_1 per la data precedente, dovresti utilizzare il LAG()
funzione, in questo modo:
select ... , lag(t1.random_1) over (order by t1.date_key), .....
from table1 t1 join table2 t2 on t1.date_key = t2.date_key
...
(e lo stesso per le altre colonne). Nota che il risultato di LAG()
ovviamente sarà NULL
per la prima riga, poiché non esiste un valore "precedente". Se vuoi qualcos'altro per la prima riga, avvolgi tutto all'interno di un COALESCE()
.
Inoltre, se hai id
è di qualche tipo e ti iscrivi tramite id
inoltre, non vuoi mescolare le date per ID diversi. Il LAG()
functions (e quasi tutte le altre funzioni analitiche) ti permette di partition by id
oltre a ordinare per data. Puoi leggere la definizione e gli esempi nella documentazione Oracle
.