Transact SQL usando WITH en CREATE VIEW


14

Quiero crear VIEW usando cláusulas WITH, pero realmente no puedo encontrar ninguna referencia sobre la sintaxis correcta.

Quiero algo como esto

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

¿Y cuál es la sintaxis correcta para usar varias cláusulas WITH?

Nada útil en MSDN :(

Respuestas:


25

El CTE entra dentro de la vista.

Tome una consulta con un CTE

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

Simplemente agregue CREAR VISTA COMO ... IR

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

MSDN describe varios CTE (ver ejemplo j)

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

El truco para mí fue eliminar algunos paréntesis adicionales. create view myView as ( select ... )funciona y create view myView as with tempTbl as select ...funciona pero create view myView as ( with tempTbl as select ... )es un error de sintaxis. `
Molomby

6
CREATE VIEW 
someview
AS
WITH CTEstuff AS (SELECT etc)
SELECT * FROM CTESTuff;

bienvenido a dba.se y gracias por la contribución. Para que lo sepas, la pregunta aquí es realmente demasiado básica para el sitio y probablemente se cerrará, pero eso no refleja tu respuesta :) Dadas tus habilidades en SQL Server y postgres, habrá muchas más preguntas sobre el tema. tu calle, así que espero que te quedes.
Jack dice que intente topanswers.xyz

Por cierto postgres es increíble! (hablando como un DBA de Oracle) Estoy seguro de que está de acuerdo :)
Jack dice que intente topanswers.xyz

1
Encantado de estar aqui. Creo que sería una pena considerar cualquier pregunta demasiado básica; aunque estoy de acuerdo en que podría no ser una pregunta de administración y podría pertenecer a un foro diferente, quizás el intercambio en sí mismo. Anyhoo gracias!
Scott Herbert

Creo que tienes razón, SO probablemente sea lo mejor, pero tratamos de ser un poco flexibles, especialmente si las personas ya se han esforzado por responder cuando nos damos cuenta :)
Jack dice que intente topanswers.xyz
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.