За да изтеглите Random_1 за предходната дата, ще използвате LAG()
функция, така:
select ... , lag(t1.random_1) over (order by t1.date_key), .....
from table1 t1 join table2 t2 on t1.date_key = t2.date_key
...
(и същото за другите колони). Имайте предвид, че резултатът от LAG()
ще бъде, разбира се, NULL
за най-ранния ред - тъй като няма "предишна" стойност. Ако искате нещо друго за първия ред, обвийте всичко в COALESCE()
.
Освен това, ако имате id
е от някакъв вид и се присъединявате чрез id
също така, тогава не искате да смесвате заедно дати за различни идентификатори. LAG()
функции (и почти всички други аналитични функции) ви позволява да partition by id
в допълнение към подреждането по дата. Можете да прочетете определението и примерите в документацията на Oracle
.