0

私が得ている出力はこれです。

2015-10-01 NULL
NULL NULL
NULL NULL
NULL 2015-10-05
2015-10-11 NULL
NULL 2015-10-13
2015-10-15 2015-10-16
2015-10-25 NULL
NULL NULL
NULL NULL
NULL NULL
NULL NULL
NULL 2015-10-31

これであってほしい

2015-10-01  2015-10-05
2015-10-11  2015-10-13
2015-10-15  2015-10-16
2015-10-25  2015-10-31 

私のコード:

select (case when (end_lag <> start_date) or end_lag is null then start_date end) as start_date, 
       (case when (start_lead <> end_date) or start_lead is null then end_date end) as end_date
from
    (select lead(start_date) over(order by start_date) as start_lead, start_date, end_date,                     lag(end_date) over(order by end_date) as end_lag
    from projects) t1;

元のテーブルには 2 つの属性 (start_date、end_date) があり、start_date のリード列と end_date のラグ列を作成しました

4

3 に答える 3

0

行の順序がないようです。したがって、ピボットを解除してペアにすることができます。

select min(dte), nullif(max(dte), min(dte))
from (select x.dte, row_number() over (order by dte) as seqnum
      from projects p cross join lateral
           (select p.start_date as dte from dual union all
            select p.end_date from dual
           ) x
     ) p
group by ceil(seqnum / 2)
于 2021-09-05T17:23:03.950 に答える