为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:--03134283914-20220909-169171-20009 Pack1
【操作系统】:Windows 10 家庭中文版
【CPU】:11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz
【问题描述】*:在dm8的查询里,执行WITH RECURSIVE 语句总是提示语法错误,具体如下:
CREATE TABLE "QMBPM"."TREE"
(
"ID" INTEGER,
"PARENT_ID" INTEGER,
"AMOUNT" DECIMAL(22,6),
"CODE" VARCHAR(50)) STORAGE(ON "TS_ERPDB", CLUSTERBTR) ;
insert into tree
values
(1,null,0,'A'),
(2,1,0,'B'),
(3,1,50,'C'),
(4,2,10,'D'),
(5,2,20,'E')
WITH RECURSIVE CTE AS (
-- 末级节点C、D、E的金额汇总
SELECT ID,PARENT_ID,AMOUNT
FROM TREE
WHERE AMOUNT > 0
UNION ALL
-- 逐级向上汇总金额
SELECT T.ID, T.PARENT_ID, SUM(CTE.AMOUNT) AS AMOUNT
FROM TREE T
INNER JOIN CTE ON T.ID = CTE.PARENT_ID
GROUP BY T.ID, T.PARENT_ID
)
-- 查询最终结果
SELECT * FROM CTE;
执行失败(语句1)
第 1 行, 第 15 列[cte]附近出现错误[-2007]:
语法分析出错
1条语句执行失败
把with后面RECURSIVE或者cte去掉试下
WITH RECURSIVE AS (
select empid,empname,deptid from "JXTY"."EMP"
where deptid>1001
union all
select empid,empname,sum(deptid) from "JXTY"."EMP"
group by empid,empname
)
select * from RECURSIVE;
或者
把你第一行的cte加个括号试一下,像这样
WITH RECURSIVE (cte) AS