问题描述
我正在尝试将查询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'
)