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

Nhân bản các bản ghi để lấp đầy khoảng trống giữa các ngày

Bạn có thể tạo câu lệnh tạo hàng bằng CONNECT BY LEVEL cú pháp, kết hợp chéo với các sản phẩm riêng biệt trong bảng của bạn, sau đó kết hợp bên ngoài với các sản phẩm khác nhau trong bảng giá của bạn. Bước cuối cùng là sử dụng LAST_VALUE chức năng và IGNORE NULLS để lặp lại giá cho đến khi gặp giá trị mới và vì bạn muốn có một chế độ xem, với CREATE VIEW tuyên bố:

create view dense_prices_test as
select
    dp.price_date
  , dp.product
  , last_value(pt.price ignore nulls) over (order by dp.product, dp.price_date) price
from (
      -- Cross join with the distinct product set in prices_test
      select d.price_date, p.product
      from (
            -- Row generator to list all dates from first date in prices_test to today
            with dates as (select min(price_date) beg_date, sysdate end_date from prices_test)
            select dates.beg_date + level - 1 price_date 
            from dual
            cross join dates
            connect by level <= dates.end_date - dates.beg_date + 1
            ) d
      cross join (select distinct product from prices_test) p
     ) dp
left outer join prices_test pt on pt.price_date = dp.price_date and pt.product = dp.product;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. CHÈN và CẬP NHẬT bản ghi bằng cách sử dụng con trỏ trong oracle

  2. Làm cách nào để khai báo và sử dụng các biến trong PL / SQL giống như trong T-SQL?

  3. Làm cách nào để tắt kích hoạt trong Oracle SQL Developer?

  4. Điền mục cây với nhóm bản ghi trong các biểu mẫu Oracle

  5. Cố vấn DBA của Oracle