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

Permintaan Oracle SQL - menghasilkan catatan antara dua tanggal

Berikut adalah salah satu cara untuk melakukan ini. Ini mengasumsikan semua tanggal adalah tanggal murni (tidak ada komponen waktu hari - yang sebenarnya berarti waktu adalah 00:00:00 di mana-mana). Ini juga mengasumsikan Anda ingin output menyertakan semua tanggal antara tanggal pertama dan terakhir di input.

Tanggal pertama dan terakhir dihitung dalam kueri terdalam. Kemudian semua tanggal di antara mereka dibuat dengan kueri hierarkis (dihubungkan dengan), dan hasilnya digabungkan ke data asli. Output kemudian diperoleh dengan menggunakan last_value() analitik fungsi dengan ignore nulls pilihan.

with
     inputs ( dt, value ) as (
       select to_date('8/1/2017', 'mm/dd/yyyy'), 'x' from dual union all
       select to_date('8/5/2017', 'mm/dd/yyyy'), 'b' from dual union all
       select to_date('8/7/2017', 'mm/dd/yyyy'), 'a' from dual
     )
-- End of simulated input data (for testing purposes only, not part of the solution).
-- Use your actual table and column names in the SQL query that begins below this line.
select dt, last_value(value ignore nulls) over (order by dt) as value
from   ( select f.dt, i.value
         from   ( select min_dt + level - 1 as dt
                  from   ( select max(dt) as max_dt, min(dt) as min_dt
                           from   inputs
                         )
                  connect by level <= max_dt - min_dt + 1
                ) f
                left outer join inputs i on f.dt = i.dt
       )
;

DT          VALUE
----------  -----
2017-08-01  x
2017-08-02  x
2017-08-03  x
2017-08-04  x
2017-08-05  b
2017-08-06  b
2017-08-07  a



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Aplikasi Qt mogok saat menggunakan driver ODBC (macOS)

  2. Mencoba membangun CGO statis yang dapat dieksekusi dengan perpustakaan Oracle di Linux/Ubuntu

  3. Fungsi Tersimpan di Oracle tidak Memasukkan Nilai ke dalam tabel yang diinginkan

  4. Bagaimana cara memformat dan mengurutkan tanggal di Oracle?

  5. jBPM 6.5 + Tomcat 8 + Transaksi Bitronix + konfigurasi Oracle 11G | Tidak dapat melakukan sesi java.lang.NullPointerException