在一个语句中使用多个CTE

cod*_*iac -1 sql sql-server-2008

我想在我的查询中使用多个CTE,但我无法使其正常工作.以下是我想要做的一个例子:

WITH tbl1 AS
    (SELECT *
    FROM tblStuff)

WITH tbl2 AS
    (SELECT tbl1.fldStuff1 ...
     FROM tbl1, tblStuff2)

    SELECT *
    FROM tbl2
Run Code Online (Sandbox Code Playgroud)

Aar*_*and 14

您只需指定WITH一次.然后,您可以列出以逗号分隔的其他CTE.例如:

WITH cte1 AS 
(
  ...
),
cte2 AS 
(
  ...
)
SELECT ...;
Run Code Online (Sandbox Code Playgroud)


Mef*_*eff 8

WITH tbl1 AS
    (SELECT *
    FROM tblStuff),

tbl2 AS
    (SELECT tbl1.fldStuff1, tbl1.fldStuff2, tblStuff2.fldStuff1, tblStuff2.fldStuff2
     FROM tbl1, tblStuff2)

    SELECT *
    FROM tbl2
Run Code Online (Sandbox Code Playgroud)

当您使用多个CTE时,不需要额外的WITH,用逗号分隔.

  • -1表示没有用`;`来终止你的语句.[参考文献](http://sqlblog.com/blogs/aaron_bertrand/archive/2009/09/03/ladies-and-gentlemen-start-your-semi-colons.aspx) (3认同)
  • 是的,他很聪明. (2认同)