如何解决使用CTE对多个列进行过滤的SQL递归查询
我正在尝试将查询1的输出作为查询2的输入。为此,我使用的是CTE(公用表表达式)。
员工层次结构
DEPT ID MANAGER1 MANAGER2 MANAGER3
Sales A234 10389 19400 3049
HR F394 29489 20403 Null
IT H339 A234
IT S599 39009 A234
预期输出
DEPT ID MANAGER1 MANAGER2 MANAGER3
IT H339 A234
IT S599 39009 A234
问题: 确定销售部门经理的直接报告。在上面的示例中,ID 234来自销售部门。由于A234位于DIRECT_MANAGER1和DIRECT_MANAGER2下,因此他的直接报告在IT部门。
WITH CTE AS(
SELECT ID from Employee_Hierarchy
WHERE DEPT='Sales'
)
SELECT DEPT,ID
FROM Employee_Hierarchy
但是我不知道CTE的加入条件
解决方法
我认为您不需要递归。似乎相关子查询就足够了:
select e.*
from employee_hierarchy e
where exists(
select 1
from employee_hierarchy m
where
m.id in (e.manager_id1,e.manager_id2,e.manager_id3)
and m.dept = 'Sales'
)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。