Oracle
 sql >> Database >  >> RDS >> Oracle

Come ottenere le informazioni sui record precedenti

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 .