Aby wyciągnąć Random_1 dla poprzedniej daty, użyjesz LAG()
funkcja, jak tak:
select ... , lag(t1.random_1) over (order by t1.date_key), .....
from table1 t1 join table2 t2 on t1.date_key = t2.date_key
...
(i to samo dla pozostałych kolumn). Zauważ, że wynik LAG()
oczywiście będzie NULL
dla najwcześniejszego wiersza - ponieważ nie ma „poprzedniej” wartości. Jeśli chcesz czegoś innego dla pierwszego wiersza, zawiń wszystko w COALESCE()
.
Również, jeśli masz id
i dołączasz przez id
również nie chcesz mieszać ze sobą dat dla różnych identyfikatorów. LAG()
funkcje (i prawie wszystkie inne funkcje analityczne) pozwalają na partition by id
oprócz zamawiania według daty. Możesz przeczytać definicję i przykłady w dokumentacji Oracle
.