【发布时间】:2013-03-12 13:00:41
【问题描述】:
我想知道这是否可能。我有一个现有查询,它使用WITH 子句将一些聚合数据应用于SELECT 查询,如下所示:(大量简化)
;WITH alias (y,z)
AS
(
SELECT y,z FROM tableb
)
SELECT y, z FROM alias
我现在想把INSERT这个查询的结果放到另一个表中。
我尝试了以下方法:
INSERT INTO tablea(a,b)
;WITH alias (y,z)
AS
(
SELECT y,z FROM tableb
)
SELECT y, z FROM alias
但我得到了错误:
';' 附近的语法不正确。
所以我尝试不使用分号但收到错误:
关键字“WITH”附近的语法不正确。
关键字“with”附近的语法不正确。如果该语句是公用表表达式或 xmlnamespaces 子句,则前面的语句必须以分号结束。
我试图用不同的语法来做可能吗?
【问题讨论】:
-
分号位于语句的结尾。把它放在前面是一个坏习惯,你应该习惯用分号正确地结束每个语句。
-
您是否检查了documentation 中的
INSERT语句?它表明 CTE 位于INSERT之前,并包含一个使用 CTE 的示例。
标签: sql sql-server common-table-expression with-clause