Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Di PL/SQL, bagaimana Anda memperbarui baris berdasarkan baris berikutnya?

Coba gunakan pernyataan gabungan. Tidak yakin itu cukup melakukan apa yang Anda inginkan tetapi itu harus berhasil. Sayangnya klausa penyisipan diperlukan) tetapi tidak boleh dipanggil.

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. Bagaimana cara mendapatkan tipe data kolom di Oracle dengan PL-SQL dengan hak istimewa rendah?

  2. Perintah Spool:Jangan menampilkan pernyataan SQL ke file

  3. Oracle Entity Framework - Panggil fungsi kustom (EDIT_DISTANCE)

  4. Cara mengelompokkan baris berurutan bersama-sama dalam SQL dengan beberapa kolom

  5. WHERE IN kondisi tidak menerima nilai String