从递归查询错误查看

问题描述 投票:0回答:1

我有一个递归查询,工作得很好:

with cte as (
         select ps.SetProduct from PRODSET ps
         left join PRODUCT pr on pr.Product= ps.Product
         where ...

         union all

         select ps.SetProduct from PRODSET ps
         inner join cte on ps.Product= cte.SetProduct
         )

select distinct cte.SetProduct from cte

添加“创建视图”会在最后一行显示错误“关键字'SET'附近的语法不正确”。我甚至没有使用SET。

整码:

create view wiev_product as

with cte as (
         select ps.SetProduct from PRODSET ps
         left join PROD pr on pr.Product= ps.Product
         where ...

         union all

         select ps.SetProduct from PRODSET ps
         inner join cte on ps.Product= cte.SetProduct
         )

select distinct cte.SetProduct from cte

我通过一个未指定的ERP系统访问MYSQL服务器。是ERP限制,还是我的查询有问题?

在代码中是否有任何解决方法,我可以尝试?

谢谢。

编辑:Microsoft SQL Server 2012(SP1)错误156没有; as with错误102; as之间;与cte

sql-server view syntax-error common-table-expression
1个回答
0
投票

这是一个ERP限制。而不是从cte创建视图而不是在第二个查询中使用该视图作为条件,我设法在具有两个cte的单个查询中完成所有操作。

with cte1 as (
         select ps.SetProduct from PRODSET ps
         left join PRODUCT pr on pr.Product= ps.Product
         where ...

         union all

         select ps.SetProduct from PRODSET ps
         inner join cte on ps.Product= cte.SetProduct
         ),

    cte2 as (
         select ps.SetProduct from PRODSET ps
         left join PRODUCT pr on pr.Product= ps.Product
         where ...

         union all

         select ps.SetProduct from PRODSET ps
         inner join cte on ps.Product= cte.SetProduct
         )

select distinct cte1.SetProduct from cte1
where cte1.SetProduct not in (select ... from cte2 where ...)
© www.soinside.com 2019 - 2024. All rights reserved.