【发布时间】:2015-11-27 19:33:45
【问题描述】:
我有一个CTE 并查询这个
;With CTE_Table as (SELECT ...)
Select * from CTE_Table
现在我尝试将此结果保存到table variable 或temporary table。如果我尝试
Declare @Table table
(...)
INSERT INTO @Table (...)
HER I PUT THE CODE ABOVE
我在WITH 语句周围得到一个incorrect syntax error。我猜Insert Into 命令需要Select statement 而不是;WITH,Create Table 也是如此。我一直在寻找解决方案,但所有I found 都没有涉及;With 之后的Select Statement。如何将上面显示的输出转换为temporary table 或table variable?
我使用 SQL Server 2014。
【问题讨论】:
-
启动 CTE 的关键字是
with而不是;with。 -
@a_horse_with_no_name 真的吗?
-
@Frisbee:是的,请参阅 Mikael 的答案以正确使用语句 termination 字符
-
@a_horse_with_no_name 终结符不依赖于行。您可以将其移至“with”行。 ;with 不是关键字。它是一个终止符,后跟一个关键字。
-
@Frisbee:我知道。但是写
;with的固定模式显然让很多人认为CTE 是通过使用;with开始的,参见例如像这样的问题:stackoverflow.com/q/11491240/330315 或这个stackoverflow.com/q/26670414/330315 以及这个问题的写作方式给我的印象是 ruedi 也认为 CTE 需要以;with开头
标签: sql tsql common-table-expression sql-server-2014 table-variable