2016-08-04 16 views
5

Ich versuche, ein CTE in Oracle zu erstellen, das nicht aus einer vorhandenen Tabelle auswählt, sondern stattdessen Daten eingefügt hat. Derzeit erstelle ich eine Tabelle und lege sie nach der Abfrage ab. Gibt es eine Möglichkeit, einen CTE zu erstellen, der das gleiche tut? Dies ist mein aktueller Code:Erstellen eines CTE in Oracle

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')); 

Antwort

8

Sie können Ihren allgemeinen Tabellenausdruck (CTE, subquery factoring, etc.) indem Sie die Datumswerte von Dual erstellen und unioning sie alle zusammen:

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 

Nicht in Bezug auf sie einen CTE zu sein, aber Sie können mit date literals die Eingabe etwas reduzieren:

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; 
+0

Dank! Ich hatte andere Beiträge gesehen, die von der Doppeltabelle sprachen, aber ich war mir nicht sicher, was es war. Das hilft wirklich. – mosk915

+0

@ mosk915 - die Dokumentation über [Auswahl aus DUAL] (http://docs.oracle.com/cd/E11882_01/server.112/e41084/queries009.htm#SQLRF20036) erklärt es ein wenig. –