SQL Server - 在INSERT语句中使用WITH子句

Mac*_*son 32 sql sql-server

我想知道这是否可行.我有一个现有的查询,使用该WITH子句将一些聚合数据应用于如下SELECT查询:(大规模简化)

;WITH alias (y,z)
AS
(
    SELECT y,z FROM tableb
)
SELECT y, z FROM alias
Run Code Online (Sandbox Code Playgroud)

我现在想把INSERT这个查询的结果放到另一个表中.

我尝试过以下方法:

INSERT INTO tablea(a,b)
;WITH alias (y,z)
AS
(
    SELECT y,z FROM tableb
)
SELECT y, z FROM alias
Run Code Online (Sandbox Code Playgroud)

但我得到错误:

';'附近的语法不正确.

所以我尝试了没有分号,但得到了错误:

关键字"WITH"附近的语法不正确.

关键字'with'附近的语法不正确.如果此语句是公用表表达式或xmlnamespaces子句,则必须以分号结束前一个语句.

我试图用不同的一些不同的语法做什么?

Tar*_*ryn 60

你需要在之后放置INSERT INTO权利CTE.所以代码将是:

;WITH alias (y,z)
AS
(
    SELECT y,z FROM tableb
)
INSERT INTO tablea(a,b)
SELECT y, z 
FROM alias
Run Code Online (Sandbox Code Playgroud)

请参阅SQL Fiddle with Demo