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

Oracle SQL, isi nilai yang hilang dengan yang terdekat yang tidak hilang

Versi pertama Anda akan berfungsi, dengan sedikit penyesuaian:

select A.*, 
       coalesce(V1, lag(V1 ignore nulls)  over (order by data)) V2
from Tab1 A;

Tweaknya adalah menghapus partition by v1 dari lag() . coalesce() hanya preferensi saya untuk ekspresi yang lebih sederhana.

Tweak yang sama juga berfungsi untuk versi kedua.

Versi Anda tidak berfungsi karena lag() nilai harus berasal dari partisi yang sama (atau menjadi null ). Ketika Anda memiliki partition by v1 , Anda sebenarnya memastikan bahwa v1 memiliki nilai yang sama seperti pada baris saat ini.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bandingkan baris dan kolom dari tabel yang sama

  2. Konversi stempel waktu/waktu tanggal dari UTC ke EST Oracle SQL

  3. Cara mengubah pengaturan untuk Pengembang SQL untuk mengenali versi SDK saat ini dengan benar

  4. Ubah nomor menjadi tanggal sql oracle

  5. Oracle outer join dengan kondisi filter pada tabel kedua