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

SQL -- Mengisi Tanggal yang tidak ada hasilnya

Tergantung pada bagaimana Anda ingin membuatnya, Anda dapat membuat tabel kalender atau buat baris secara dinamis menggunakan Oracle connect by sintaks.

with the_dates as (
  select max(trunc(Create_Dtime)) as max_date
       , min(trunc(Create_Dtime)) as min_date
    from player 
         )
  , generator as (
  select min_date + level as the_date
    from the_dates
 connect by level <= max_date
         )
select g.the_date, count(trunc(p.Create_Dtime))
  from generator g
  left outer join player p
    on g.the_date = trunc(p.Create_Dtime)
 group by g.the_date
 order by g.the_date desc

Jika Anda membuka opsi tabel kalender, ini sedikit lebih bersih:

with the_dates as (
  select max(trunc(Create_Dtime)) as max_date
       , min(trunc(Create_Dtime)) as min_date
    from player 
         )
select c.the_date, count(trunc(p.Create_Dtime))
  from calender c
  join the_dates td
    on c.the_date between td.min_date and td.max_date
  left outer join join player p
    on c.the_date = trunc(p.Create_Dtime)
 group by c.the_date
 order by c.the_date

Atau, baru saja memperhatikan batasan tanggal Anda:

with the_dates as (
  select to_date('07-05-2012','dd-mm-yyyy') + level as the_date
    from dual
 connect by level <= trunc(to_date('07-05-2012','dd-mm-yyyy') - sysdate)
         )
 select td.the_date, count(trunc(p.create_dtime))
   from the_dates td
   left outer join player p
     on td.the_date = trunc(p.create_dtime)
  group by td.the_date
  order by td.the_date

Untuk semua ini, saya akan merekomendasikan indeks di trunc(create_dtime) di player tabel.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kerangka Entitas Oracle Timestamp

  2. Beberapa sisipan SQL oracle

  3. Mengonversi angka/angka dalam kata-kata untuk mata uang INR (Rupee India) di Oracle PL/SQL

  4. Hapus dengan Gabung Kiri di Oracle 10g

  5. Menangani null saat menggunakan Oracle XMLType