Transact SQL utilizând WITH în CREATE VIEW (Administrarea bazelor de date, T Sql, Vizualizare)

bazzilic a intrebat.

Vreau să creez VIEW folosind clauzele WITH, dar chiar nu găsesc referințe despre sintaxa corectă.

Vreau ceva de genul următor

WITH TempTbl AS (SELECT ...)
CREATE VIEW SomeView
SELECT *
FROM TempTbl

Și care este sintaxa corectă pentru utilizarea mai multor clauze WITH?

Nimic util pe MSDN 🙁

2 răspunsuri
gbn

CTE-ul merge în interiorul vizualizării.

Luați o interogare cu un CTE

WITH cte AS (...) SELECT ...;

Doar adăugați CREATE VIEW AS … GO

CREATE VIEW
AS
WITH cte AS (...) SELECT ...;
GO

MSDN descrie mai multe CTE-uri (A se vedea exemplul j)

CREATE VIEW
AS
WITH
   cte1 AS (...),
   cte2 AS (...),
   cte3 AS (...)
SELECT ...
GO

Comentarii

  • Trucul pentru mine a fost să elimin niște paranteze suplimentare. create view myView as ( select ... ) funcționează și create view myView as with tempTbl as select ... funcționează dar create view myView as ( with tempTbl as select ... ) este o eroare de sintaxă. ` –  > Por Molomby.
Scott Herbert
CREATE VIEW 
someview
AS
WITH CTEstuff AS (SELECT etc)
SELECT * FROM CTESTuff;

Comentarii

  • bine ați venit pe dba.se și vă mulțumim pentru contribuție. Doar ca să știi, întrebarea de aici este într-adevăr prea elementară pentru site și va fi probabil închisă – dar asta nu se răsfrânge asupra răspunsului tău 🙂 Având în vedere abilitățile tale în SQL Server și postgres, vor fi multe alte întrebări pe subiect, chiar pe strada ta, așa că sper să rămâi pe aici. –  > Por Jack Douglas.
  • Btw postgres este minunat! (vorbind în calitate de DBA Oracle) Sunt sigur că ești de acord 🙂 –  > Por Jack Douglas.
  • Mă bucur să fiu aici. Cred că ar fi păcat să considerăm orice întrebare prea elementară; deși sunt de acord că s-ar putea să nu fie o întrebare de administrare și ar putea aparține unui alt forum, poate chiar stack exchange. Oricum, mulțumesc! –  > Por Scott Herbert.
  • Cred că ai dreptate SO este probabil cel mai bine, dar încercăm să fim puțin flexibili, mai ales dacă oamenii au depus deja eforturi pentru a răspunde până când am observat 🙂 –  > Por Jack Douglas.