Pour extraire Random_1 pour la date précédente, vous utiliseriez le LAG()
fonction, comme ceci :
select ... , lag(t1.random_1) over (order by t1.date_key), .....
from table1 t1 join table2 t2 on t1.date_key = t2.date_key
...
(et idem pour les autres colonnes). Notez que le résultat de LAG()
sera, bien sûr, NULL
pour la ligne la plus ancienne - puisqu'il n'y a pas de valeur "précédente". Si vous voulez autre chose pour la première ligne, enveloppez tout dans un COALESCE()
.
Aussi, si vous avez id
's d'une certaine sorte et vous rejoignez par id
ainsi, vous ne voulez pas mélanger les dates pour différents identifiants. Le LAG()
les fonctions (et presque toutes les autres fonctions analytiques) vous permettent de partition by id
en plus de la commande par date. Vous pouvez lire la définition et les exemples dans la documentation Oracle
.