我正试图编写以下 SQL 语句。
declare @s varchar(max) = (
with c as (select ...)
select a, b, c, d, ....
from ... join c on .... join c on .... join c on ....
order by ...
for xml raw('...'), elements
);
然而,它是不正确的语法(以下显示错误消息)。我必须将其转换为子查询吗?我试图避免在多个地方扩展CTE。
关键字 "with" 附近有语法错误。如果这个语句是一个常用表达式、xmlnamespaces 子句或更改跟踪上下文子句,则前面的语句必须以分号结束。
更新:
for xml
和 order by
使得 select @s = ...
for xml
可能会使其不可行? - ca9163d9with temp as (select ... for xml...)
更改为with c as (...), temp(value) as (...)
。 - ca9163d9SELECT @s =
可以工作,但SET @s =
不行吗? - rstackhouse