基于oracle中

时间:2018-02-06 06:42:05

标签: oracle11g oracle10g

enter image description here

如何根据每一行在两个日期列之间生成日期

1 个答案:

答案 0 :(得分:0)

应使用行生成器技术,例如:

SQL> alter session set nls_date_format = 'dd.mm.yyyy';

Session altered.

SQL> with test (sno, start_date, end_date) as
  2  (select 1, date '2018-01-01', date '2018-01-05' from dual union
  3   select 2, date '2018-01-03', date '2018-01-05' from dual
  4  )
  5  select sno, start_date + column_value - 1 datum
  6  from test,
  7       table(cast(multiset(select level from dual
  8                           connect by level <= end_date - start_date + 1)
  9                  as sys.odcinumberlist))
 10  order by sno, datum;

       SNO DATUM
---------- ----------
         1 01.01.2018
         1 02.01.2018
         1 03.01.2018
         1 04.01.2018
         1 05.01.2018
         2 03.01.2018
         2 04.01.2018
         2 05.01.2018

8 rows selected.

SQL>