Oracle
 sql >> Datenbank >  >> RDS >> Oracle

So erhalten Sie Informationen zu früheren Aufzeichnungen

Um Random_1 für das vorherige Datum abzurufen, würden Sie die LAG() verwenden Funktion, etwa so:

select ... ,  lag(t1.random_1) over (order by t1.date_key), .....
from  table1 t1 join table2 t2 on t1.date_key = t2.date_key
...

(und dasselbe für die anderen Spalten). Beachten Sie, dass das Ergebnis von LAG() wird natürlich NULL sein für die früheste Zeile - da es keinen "vorherigen" Wert gibt. Wenn Sie für die erste Zeile etwas anderes wollen, packen Sie alles in ein COALESCE() .

Auch wenn Sie id haben 's irgendeiner Art und Sie treten durch id bei Außerdem möchten Sie keine Daten für verschiedene IDs mischen. Die LAG() Funktionen (und fast alle anderen analytischen Funktionen) können Sie partition by id zusätzlich zur Sortierung nach Datum. Sie können die Definition und Beispiele in der Oracle-Dokumentation lesen .