Untuk menarik Random_1 untuk tanggal sebelumnya, Anda akan menggunakan LAG()
fungsi, seperti:
select ... , lag(t1.random_1) over (order by t1.date_key), .....
from table1 t1 join table2 t2 on t1.date_key = t2.date_key
...
(dan sama untuk kolom lainnya). Perhatikan bahwa hasil dari LAG()
tentu saja akan menjadi NULL
untuk baris paling awal - karena tidak ada nilai "sebelumnya". Jika Anda menginginkan sesuatu yang lain untuk baris pertama, bungkus semuanya dalam COALESCE()
.
Juga, jika Anda memiliki id
's dari beberapa jenis dan Anda bergabung dengan id
juga, maka Anda tidak ingin mencampur tanggal untuk id yang berbeda. LAG()
fungsi (dan hampir semua fungsi analitik lainnya) memungkinkan Anda untuk partition by id
selain memesan berdasarkan tanggal. Anda dapat membaca definisi dan contoh di dokumentasi Oracle
.