SQL:在嵌套公用表表达式

时间:2017-06-13 11:34:59

标签: sql sql-server

我想在嵌套CTE中插入临时表,如下面的代码所示。我可以从第一个x内部第二个表达式中选择,但不能插入临时表。

WITH x AS 
    (
        SELECT * FROM MyTable
    ), 
    y AS 
    (
        SELECT * INTO #temp FROM x
    )
    SELECT * FROM y

我必须使用嵌套CTE执行此操作,因为还有其他逻辑要实现。我知道我可以在表达式之外插入临时表。有没有办法实现这个目标?请帮忙。

1 个答案:

答案 0 :(得分:4)

SQL Server非常明确。查询不能同时返回结果集并将结果保存到查询中。你可以轻松地做到:

WITH x AS (
      SELECT * FROM MyTable
     )
SELECT x.*
INTO #temp
FROM x;

然后:

SELECT t.*
FROM #temp t;

第一个查询将结果集保存到临时表中。第二个返回查询中的值。