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

Oracle SQL, điền giá trị bị thiếu với giá trị không bị thiếu gần nhất

Phiên bản đầu tiên của bạn sẽ hoạt động, với một chút tinh chỉnh:

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

Tinh chỉnh là loại bỏ phân vùng partition by v1 từ lag() . coalesce() chỉ là sở thích của tôi đối với các biểu thức đơn giản hơn.

Tinh chỉnh tương tự cũng sẽ hoạt động cho phiên bản thứ hai.

Phiên bản của bạn không hoạt động do lag() giá trị phải đến từ cùng một phân vùng (hoặc null ). Khi bạn có partition by v1 , bạn đang thực sự đảm bảo rằng v1 có cùng giá trị như trong hàng hiện tại.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dữ liệu bảng Oracle để CHÈN câu lệnh với JAVA

  2. Nhiều cơ sở dữ liệu với các mô hình thay đổi một chút. Làm cách nào để cho phép Entity Framework xóa các cột trong thời gian chạy?

  3. Phục hồi cơ sở dữ liệu Oracle

  4. Định cấu hình Trình xử lý trong Cơ sở dữ liệu Oracle (các phiên bản 12c, 18c và 19c)

  5. Có được phép sử dụng một SELECT bên trong một hàm bảng PL / SQL có kết cấu không?