Transactez SQL à l'aide de WITH dans CREATE VIEW

14

Je veux créer VIEW en utilisant des clauses WITH, mais je ne trouve vraiment aucune référence sur la syntaxe correcte.

Je veux quelque chose comme ça

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

Et quelle est la syntaxe correcte pour utiliser plusieurs clauses WITH?

Rien d'utile sur MSDN :(

bazzilic
la source

Réponses:

25

Le CTE entre dans la vue.

Prendre une requête avec un CTE

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

Ajoutez simplement CREATE VIEW AS .. GO

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

MSDN décrit plusieurs CTE (voir l'exemple j)

CREATE VIEW
AS
WITH
   cte1 AS (...),
   cte2 AS (...),
   cte3 AS (...)
SELECT ...
GO
gbn
la source
L'astuce pour moi était de supprimer quelques parenthèses supplémentaires. create view myView as ( select ... )fonctionne et create view myView as with tempTbl as select ...fonctionne mais create view myView as ( with tempTbl as select ... )est une erreur de syntaxe. `
Molomby
6
CREATE VIEW 
someview
AS
WITH CTEstuff AS (SELECT etc)
SELECT * FROM CTESTuff;
Scott Herbert
la source
bienvenue à dba.se et merci pour la contribution. Juste pour que vous sachiez, la question ici est vraiment trop basique pour le site et sera probablement fermée - mais ce n'est pas une réflexion sur votre réponse :) Compte tenu de vos compétences sur SQL Server et postgres, il y aura beaucoup plus de questions sur le sujet tout de suite votre rue, donc j'espère que vous restez.
Jack dit d'essayer topanswers.xyz
Btw postgres est génial! (parlant en tant qu'Oracle DBA) Je suis sûr que vous êtes d'accord :)
Jack dit d'essayer topanswers.xyz
1
Ravi d'être ici. Je pense qu'il serait dommage de considérer une question trop basique; bien que je convienne que ce ne pourrait pas être une question d'administration et pourrait appartenir à un forum différent, peut-être l'échange de pile lui-même. Anyhoo merci!
Scott Herbert
Je pense que vous avez raison, SO est probablement le meilleur, mais nous essayons d'être un peu flexibles, surtout si les gens ont déjà fait des efforts pour répondre au moment où nous le remarquons :)
Jack dit d'essayer topanswers.xyz