有个部门表, 字段DEPT_LEVL 代表部门级别 分别是 10--公司级 20--部门级 30--分部级 40---科室级 50---股级, 字段DEPT_SET_ID是部门id, 字段PARENT_DEPT_ID是上级部门id, 字段 DEPT_CHN_DESC是名称, 我现在需要查询 某个股级对应的公司,部门,股信息
时间: 2024-02-23 10:00:33 浏览: 73
可以使用递归查询来实现,以下是一种基于递归查询的 SQL 语句示例:
```
WITH RECURSIVE dept_tree AS (
SELECT DEPT_SET_ID, PARENT_DEPT_ID, DEPT_CHN_DESC, DEPT_LEVL
FROM your_dept_table
WHERE DEPT_SET_ID = '股级部门id' -- 从指定的股级部门开始查询
UNION ALL
SELECT d.DEPT_SET_ID, d.PARENT_DEPT_ID, d.DEPT_CHN_DESC, d.DEPT_LEVL
FROM your_dept_table d
JOIN dept_tree dt ON d.DEPT_SET_ID = dt.PARENT_DEPT_ID
)
SELECT DEPT_SET_ID, PARENT_DEPT_ID, DEPT_CHN_DESC, DEPT_LEVL
FROM dept_tree
WHERE DEPT_LEVL IN (10, 20, 50) -- 查询公司级、部门级、股级部门信息
ORDER BY DEPT_LEVL ASC; -- 按部门级别升序排序
```
这个 SQL 语句中,使用了 CTE (Common Table Expression) 和递归查询的方式,将指定的股级部门及其上级部门逐级查询,并将每一级部门的信息存入一个名为 dept_tree 的临时表中。最后,根据部门级别筛选出公司级、部门级、股级部门信息,并按部门级别升序排序。
阅读全文