Để lấy Random_1 cho ngày trước đó, bạn sẽ sử dụng LAG()
chức năng, như vậy:
select ... , lag(t1.random_1) over (order by t1.date_key), .....
from table1 t1 join table2 t2 on t1.date_key = t2.date_key
...
(và tương tự cho các cột khác). Lưu ý rằng kết quả của LAG()
tất nhiên sẽ là NULL
cho hàng sớm nhất - vì không có giá trị "trước đó". Nếu bạn muốn thứ gì đó khác cho hàng đầu tiên, hãy bọc mọi thứ trong COALESCE()
.
Ngoài ra, nếu bạn có id
của một số loại và bạn tham gia bằng id
cũng như vậy, sau đó bạn không muốn kết hợp các ngày với nhau cho các id khác nhau. LAG()
các hàm (và hầu hết tất cả các hàm phân tích khác) cho phép bạn partition by id
ngoài việc đặt hàng theo ngày. Bạn có thể đọc định nghĩa và ví dụ trong tài liệu Oracle
.