Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Cách lấy thông tin hồ sơ trước đó

Để 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 .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Khi mở một kết nối oracle, đối tượng kết nối là null

  2. Chuỗi Oracle đến ngày 2013-10-15T20:12:56.24584 + 0100

  3. ORA-12705:Không thể truy cập tệp dữ liệu NLS hoặc môi trường không hợp lệ

  4. Kết nối cơ sở dữ liệu oracle trong web.config asp.net

  5. EF6 có thể tạo các đối tượng mô hình của tôi từ một con trỏ tham chiếu được trả về bởi một thủ tục được lưu trữ oracle không