sql >> データベース >  >> RDS >> Oracle

Oracleで不足している日付をグループごとに入力するにはどうすればよいですか

    Recursive SubqueryFactoring を使用できます。 間隔を生成するには:

    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. MySQLでnullになる可能性のある最大2つの列で並べ替える方法は?

    2. 2つの日付の間の月は機能します

    3. 参照データパターン:拡張可能で柔軟

    4. mysql-列をnullにすることはできません