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

Trong PL / SQL, làm thế nào để bạn cập nhật một hàng dựa trên hàng tiếp theo?

Hãy thử sử dụng một câu lệnh hợp nhất. Không chắc nó hoàn toàn làm được những gì bạn muốn nhưng nó sẽ hoạt động. Thật không may, mệnh đề chèn là cần thiết) nhưng không bao giờ nên được gọi.

merge into t a
using (
  select 
    A, 
    B, 
    timestamp, 
    lag(A) over (order by id, timestamp) as prior_A,
    lag(timestamp) over (order by B, timestamp) as prior_timestamp
  from t) b
on  (a.B = b.B)
when matched then 
  update set a.a = case when b.timestamp-b.prior_timestamp <= 45 
    then b.prior_A else b.A end
when not matched then insert (B) values (null)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để ghi nhật ký các câu lệnh CẬP NHẬT bằng cách sử dụng ghi nhật ký của trình điều khiển Oracle một cách hợp lý?

  2. Oracle:Có thể tạo một từ đồng nghĩa cho một lược đồ không?

  3. Oracle / Sybase SQL - lấy giá trị dựa trên bản ghi trước đó (không phải LAG đơn giản)

  4. Chuyển đổi Báo cáo Oracle (.rdf) sang báo cáo BIRT

  5. Trả về nhiều giá trị từ hàm Oracle