为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:V8(build 2023.12.14)
【操作系统】:LINUX
【CPU】:INTEL
【问题描述】*:一张部门表DPET,里面有部门编码DEPT_ID,父部门DEPT_FU,现在需要通过部门编码、父部门将所有部门的全路径查询出来到all_dept列,顶级部门的父部门记录的是所属组织的编码,
WITH RECURSIVE dept_hierarchy (DEPT_ID, DEPT_FU, dept_path, LEVEL) AS (
SELECT DEPT_ID, DEPT_FU, CAST(DEPT_ID AS VARCHAR(255)), 1
FROM DPET
WHERE DEPT_FU = '010'
UNION ALL
SELECT d.DEPT_ID, d.DEPT_FU, CONCAT(h.dept_path, '->', d.DEPT_ID), h.LEVEL + 1
FROM DPET d
JOIN dept_hierarchy h ON d.DEPT_FU = h.DEPT_ID
)
SELECT DEPT_ID, dept_path AS all_dept
FROM dept_hierarchy;
执行报执行失败,-2007,第1行,第15列{dept_hierarchy }附近出现错误,语法分析出错
这个递归是PG的写法,在DM上有自己的递归语法,跟Oracle兼容的,可以参考下面这种写法调整试试。
SELECT DEPT_ID,
SYS_CONNECT_BY_PATH(DEPT_ID, '->') AS all_dept
FROM DPET
START WITH DEPT_FU = '010'
CONNECT BY PRIOR DEPT_ID = DEPT_FU;