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

Giá trị sử dụng PostgreSQL từ hàng trước nếu thiếu

Bạn có thể kết hợp tự nối và các chức năng của cửa sổ

Để đơn giản hóa, tôi lấy bảng này với các giá trị mẫu sau:

create table t ( a int, b int);    
insert into t values 
( 1, 1),
( 2, Null),
( 3, Null),
( 4, 2 ),
( 5, Null),
( 6, Null);

Trong truy vấn của bạn atrunc_ubid của bạn . Truy vấn là:

with cte as (    
    select 
      t1.a, 
      coalesce( t1.b, t2.b, 0) as b,
      rank() OVER 
       (PARTITION BY t1.a ORDER BY t2.a DESC) as pos
    from t t1 
    left outer join t t2
      on t2.b is not null and
         t2.a < t1.a    
)
select a, b
from cte
where pos = 1;

Và kết quả:

| A | B |
---------
| 1 | 1 |
| 2 | 1 |
| 3 | 1 |
| 4 | 2 |
| 5 | 2 |
| 6 | 2 |


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tại sao tôi không thể loại trừ các cột phụ thuộc khỏi `GROUP BY` khi tôi tổng hợp theo một khóa?

  2. Nối nhiều hàng trong một mảng với SQL trên PostgreSQL

  3. Cách điền ngày bị thiếu trong PostgreSQL bằng cách sử dụng create_series

  4. Cách thêm số ngày trong datetime postgresql

  5. Làm cách nào để xem mã TẠO CHẾ ĐỘ XEM cho một chế độ xem trong PostgreSQL?