Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment obtenir des informations sur les enregistrements précédents

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 .