我想在嵌套CTE中插入临时表,如下面的代码所示。我可以从第一个x内部第二个表达式中选择,但不能插入临时表。
WITH x AS
(
SELECT * FROM MyTable
),
y AS
(
SELECT * INTO #temp FROM x
)
SELECT * FROM y
我必须使用嵌套CTE执行此操作,因为还有其他逻辑要实现。我知道我可以在表达式之外插入临时表。有没有办法实现这个目标?请帮忙。
答案 0 :(得分:4)
SQL Server非常明确。查询不能同时返回结果集并将结果保存到查询中。你可以轻松地做到:
WITH x AS (
SELECT * FROM MyTable
)
SELECT x.*
INTO #temp
FROM x;
然后:
SELECT t.*
FROM #temp t;
第一个查询将结果集保存到临时表中。第二个返回查询中的值。