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
.