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

Menduplikasi catatan untuk mengisi celah antar tanggal

Anda dapat membuat pernyataan generator baris menggunakan CONNECT BY LEVEL sintaks, gabungkan silang dengan produk yang berbeda di tabel Anda, lalu gabungkan di luar ke tabel harga Anda. Sentuhan terakhir adalah menggunakan LAST_VALUE fungsi dan IGNORE NULLS untuk mengulangi harga hingga nilai baru ditemukan, dan karena Anda menginginkan tampilan, dengan CREATE VIEW pernyataan:

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. Cara Menghapus "X Rows Selected" di SQLcl &SQL*Plus (Oracle)

  2. Mengurai string yang dibatasi pipa menjadi kolom?

  3. Juli 2016 PSU gagal isqora

  4. Menghitung usia dari ulang tahun dengan pemicu Oracle plsql dan memasukkan usia ke dalam tabel

  5. 12.2 Fitur Baru RAC/GI