2016-07-22 6 views
0

Ich habe eine Sicht auf Basistabelle Test1 erstellt und ich habe zwei Spalten während der Erstellung hinzugefügt.Ich versuche, ein Update in der Ansichtserstellung hinzuzufügen

create or replace force view abc1 as (select A.*,cast(NULL as timestamp) AS new1,cast(NULL as varchar2) AS new2 from test1 A); 

so nach Ansicht erstellt, muss es Daten wie folgt:

select * from ABC1;

TT   | TT_C2     | TT_DAY  | TT_HOURLY  | OC | SEV  | EXTRACOL | IDENTIFIER | NEW1 | NEW2 
1468309423961 | 2016-07-12 07:43:43.0 | 12-07-2016 | 12-07-2016 07 | abc | Critical | asdf  | 1   | null | null 
1468922692865 | 2016-07-19 10:04:52.0 | 19-07-2016 | 19-07-2016 10 | abc | Critical | asdf  | 1   | null | null 
1568308812001 | 2019-09-12 17:20:12.0 | 12-09-2019 | 12-09-2019 17 | abc1 | Major | asdf  | 1   | null | null 
1468308812001 | 2016-07-12 07:33:32.0 | 12-07-2016 | 12-07-2016 07 | abc2 | Minor | asdf  | 1   | null | null 
1468308815972 | 2016-07-12 07:33:35.0 | 12-07-2016 | 12-07-2016 07 | abc | Critical | asdf  | 1   | null | null 

jetzt ich versuche new1 Spalte zu aktualisieren, die von timestmap Datentyp ist, aber ich bin nicht in der Lage, weil einige Einschränkung die Ansicht zu aktualisieren ..

update view abc1 set new1 = DATEADD('SECOND', (TT)/1000), DATE '1970-01-01') WHERE new1 IS NULL; 

Fehler kommt, ist ::

Syntax error in SQL statement "UPDATE ABC1 SET NEW1 = DATEADD('SECOND', (TT)/1000)[*], DATE '1970-01-01') WHERE NEW1 IS NULL "; expected "[, ::, *, /, %, +, -, ||, ~, !~, NOT, LIKE, REGEXP, IS, IN, BETWEEN, AND, OR, ,"; SQL statement: 
update abc1 set new1 = DATEADD('SECOND', (TT)/1000), DATE '1970-01-01') WHERE new1 IS NULL [42001-176] 

Wie kann ich meine "new1" Spalten Abfrage aktualisieren in meine Sicht erstellen, so dass dies nur während der Erstellung von Ansichten adressiert werden.

Das ist meine Basistabelle ::

TT   | TT_C2     | TT_DAY  | TT_HOURLY  | OC | SEV  | EXTRACOL | IDENTIFIER 
1468309423961 | 2016-07-12 07:43:43.0 | 12-07-2016 | 12-07-2016 07 | abc | Critical | asdf  | 1 
1468922692865 | 2016-07-19 10:04:52.0 | 19-07-2016 | 19-07-2016 10 | abc | Critical | asdf  | 1 
1568308812001 | 2019-09-12 17:20:12.0 | 12-09-2019 | 12-09-2019 17 | abc1 | Major | asdf  | 1 
1468308812001 | 2016-07-12 07:33:32.0 | 12-07-2016 | 12-07-2016 07 | abc2 | Minor | asdf  | 1 
1468308815972 | 2016-07-12 07:33:35.0 | 12-07-2016 | 12-07-2016 07 | abc | Critical | asdf  | 1 

Dank im Voraus!

grüße

Antwort

1

Idealerweise sollten Sie die Ansicht nicht aktualisieren.

Gemäß Ihrer Anforderung, müssen Sie Wrapper zum Abrufen von Spalten verwenden (d. H. Über auswählen).

create or replace force view abc7 as (select tt,oc,sev, converted_event_time,formatdatetime(converted_event_time,'d-MM-yyyy HH') ,formatdatetime(converted_event_time,'d-MM-yyyy') AS event_time_day from (select tt,oc,sev,DATEADD('SECOND', (tt)/1000, DATE '1970-01-01') AS converted_event_time from test1)); 

Ich hoffe, Sie finden diese Antwort nützlich.

+0

Viola, das ist großartig .. vielen Dank – Apurv

Verwandte Themen