在CREATE VIEW中使用WITH进行SQL处理


14

我想使用WITH子句创建VIEW,但实际上找不到正确语法的任何引用。

我想要这样

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

使用几个WITH子句的正确语法是什么?

在MSDN上没有任何用处:(

Answers:


25

CTE进入视图内。

通过CTE进行查询

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

只需添加CREATE VIEW AS .. GO

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

MSDN确实描述了多个CTE(请参见示例j)

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

我的诀窍是删除一些多余的括号。create view myView as ( select ... )可以,create view myView as with tempTbl as select ...但是create view myView as ( with tempTbl as select ... )是语法错误。`
Molomby '16

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

欢迎访问dba.se,并感谢您的贡献。大家知道,这里的问题对于站点而言确实太基本了,可能会被关闭-但这并不能反映您的答案:)鉴于您在SQL Server和Postgres上的技能,马上就会有更多的主题问题你的街道,所以我希望你能坚持下去。
杰克说尝试topanswers.xyz 2011年

顺便说一句postgres太棒了!(以Oracle DBA的身份发言),我确定您同意:)
杰克说请尝试topanswers.xyz 2011年

1
很高兴来到这里。我认为将任何问题都视为基本问题实在令人遗憾;尽管我同意这可能不是管理问题,并且可能属于另一个论坛,但也许是堆栈交换本身。谢谢!
Scott Herbert

我认为您是对的,所以这可能是最好的选择,但我们会尝试并保持一定的灵活性,特别是如果人们在我们注意到的时候已经做出了回答:)
杰克说请尝试topanswers.xyz 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.