在一个语句中使用多个CTE

时间:2013-07-19 14:33:06

标签: sql sql-server-2008

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

WITH tbl1 AS
    (SELECT *
    FROM tblStuff)

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

    SELECT *
    FROM tbl2

2 个答案:

答案 0 :(得分:14)

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

WITH cte1 AS 
(
  ...
),
cte2 AS 
(
  ...
)
SELECT ...;

答案 1 :(得分:8)

WITH tbl1 AS
    (SELECT *
    FROM tblStuff),

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

    SELECT *
    FROM tbl2

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