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

Làm cách nào để điền các ngày còn thiếu theo nhóm trong Oracle

Bạn có thể sử dụng Tính toán truy vấn con đệ quy để tạo khoảng thời gian:

with tbl as (
    select to_date('1/28/2020 11:51', 'MM/DD/YYYY HH24:MI') as color_date, 'red' as color  from dual union
    select to_date('2/3/2020 11:51', 'MM/DD/YYYY HH24:MI') as color_date,  'red' as color  from dual union
    select to_date('2/6/2020 11:51', 'MM/DD/YYYY HH24:MI') as color_date,  'red' as color  from dual union
    select to_date('4/16/2020 11:51', 'MM/DD/YYYY HH24:MI') as color_date, 'blue' as color from dual union
    select to_date('4/19/2020 11:51', 'MM/DD/YYYY HH24:MI') as color_date, 'blue' as color from dual union
    select to_date('4/23/2020 11:51', 'MM/DD/YYYY HH24:MI') as color_date, 'blue' as color from dual union
    select to_date('5/2/2020 11:51', 'MM/DD/YYYY HH24:MI') as color_date,  'blue' as color from dual
),
tbl_min_max as (
    select t.color, min(trunc(color_date)) begin_interval, max(trunc(color_date)) end_interval from tbl t group by t.color
),
tbl_interval(color, begin_interval, end_interval, color_date) as (
    select color, begin_interval, end_interval, begin_interval from tbl_min_max
    union all 
    select color, begin_interval, end_interval, color_date + 1 from tbl_interval where color_date < end_interval 
)
select 
    t.color, t.color_date
from 
    tbl_interval t
order by
    t.color, t.color_date



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Câu lệnh select oracle sql siêu lập trình

  2. Gửi một mảng giá trị tới thủ tục Oracle để sử dụng trong mệnh đề WHERE IN

  3. Oracle:Tại sao tôi không thể dựa vào ROWNUM trong mệnh đề xóa

  4. Oracle PLSQL trả về một loại hàng

  5. Oracle SQL to_date &to_timestamp ORA-01858:một ký tự không phải số được tìm thấy ở vị trí số được mong đợi &ORA-01850:giờ phải từ 0 đến 23