将两个 CTE 与 UNION 合并会导致错误



收到以下错误:

'Msg 156,级别 15,状态 1,第 53
行 关键字"WITH"附近的语法不正确。

消息 319,级别 15,状态 1,第 53 行
关键字"with"附近的语法不正确。如果此语句是公用表表达式、xmlnamespaces 子句或更改跟踪上下文子句,则前面的语句必须以分号结尾。

单独运行 CTE 时,没问题。但是当使用联合进行组合时..然后出现错误。

With cte1 as 
(
select
.
.
.
Select
from
)
select
UNION
With cte2 as 
(
Select
From
)
Select 
from

在 SQL Server 中,CTE 附加到最外层的select。 换句话说,每个查询只有一个,所有定义都必须在select之前。

因此,将它们合并为一个with

with cte1 as (
select . . . 
),
cte2 as (
select . . .
)
select . . .
from cte1 . . . 
union
select  . . 
from cte2 . . .;

最新更新