4

我有一个CTE并查询这个

;With CTE_Table as (SELECT ...)
Select * from CTE_Table

现在我尝试将此结果保存到table variableortemporary table中。如果我尝试

Declare @Table table
(...)
INSERT INTO @Table (...)
HER I PUT THE CODE ABOVE

我得到一个incorrect syntax error周围的WITH声明。我猜该Insert Into命令需要 aSelect statement而不是 a ;WITH,对于Create Table. 我一直在寻找解决方案,但我发现Select Statement的一切都不涉及;With. 如何将上面显示的输出转换为temporary tableor table variable

我使用 SQL Server 2014。

4

2 回答 2

10

在 CTE 声明之后将插入语句添加到主查询。

declare @T table(ID int);

with C(ID) as
(
  select 1 union all
  select 2
)
insert into @T(ID)
select ID
from C;

select ID
from @T;
于 2015-09-02T10:29:44.377 回答
0
DECLARE @t table(
Name nvarchar(MAX),
Id bigint
)

;WITH CTE as (
    SELECT 'Name' as Name , 1 as Id
)
INSERT INTO @t(Name,Id)
SELECT Name,Id FROM CTE


SELECT * FROM @t
于 2015-09-02T10:34:58.917 回答