Создание CTE в Oracle

Я пытаюсь создать CTE в Oracle, который не выбирает из существующей таблицы, а вместо этого вставляет в нее данные. В настоящее время я создаю таблицу, а затем удаляю ее после выполнения запроса. Есть ли способ создать CTE, который эффективно делает то же самое? Это мой текущий код:

create table RTG_YEARS
(YR date);

insert into RTG_YEARS values (to_date('2013-01-01', 'yyyy-mm-dd'));
insert into RTG_YEARS values (to_date('2013-12-31', 'yyyy-mm-dd'));
insert into RTG_YEARS values (to_date('2014-01-01', 'yyyy-mm-dd'));
insert into RTG_YEARS values (to_date('2014-12-31', 'yyyy-mm-dd'));
insert into RTG_YEARS values (to_date('2015-01-01', 'yyyy-mm-dd'));
insert into RTG_YEARS values (to_date('2015-12-31', 'yyyy-mm-dd'));

Ответы на вопрос(1)

Решение Вопроса

факторинг подзапросаи т. д.) путем выбора значений даты из двойного и объединения их всех вместе:

with RTG_YEARS (YR) as (
  select to_date('2013-01-01', 'yyyy-mm-dd') from dual
  union all select to_date('2013-12-31', 'yyyy-mm-dd') from dual
  union all select to_date('2014-01-01', 'yyyy-mm-dd') from dual
  union all select to_date('2014-12-31', 'yyyy-mm-dd') from dual
  union all select to_date('2015-01-01', 'yyyy-mm-dd') from dual
  union all select to_date('2015-12-31', 'yyyy-mm-dd') from dual
)
select * from RTG_YEARS;

YR       
----------
2013-01-01
2013-12-31
2014-01-01
2014-12-31
2015-01-01
2015-12-31

Это не относится к CTE, но вы можете немного сократить набор текста, используялитералы даты:

with RTG_YEARS (YR) as (
  select date '2013-01-01' from dual
  union all select date '2013-12-31' from dual
  union all select date '2014-01-01' from dual
  union all select date '2014-12-31' from dual
  union all select date '2015-01-01' from dual
  union all select date '2015-12-31' from dual
)
select * from RTG_YEARS;
 mosk91505 авг. 2016 г., 14:43
Спасибо! Я видел другие посты, говорящие о двойном столе, но я не был уверен, что это было. Это действительно помогает.
 Alex Poole05 авг. 2016 г., 14:47
@ mosk915 - документация овыбирая из ДВОЙНОГО объясняет это немного.

Ваш ответ на вопрос