SQL 使用 CTE 对多列进行筛选的递归查询

SQL Recursive query using CTE to filter on multiple columns

我正在尝试将查询 1 的输出作为查询 2 的输入。为此,我使用了 CTE(通用 Table 表达式)。

员工层次结构

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 来自销售部门。他的直接下属在 IT 部门,因为 A234 在 DIRECT_MANAGER1 和 DIRECT_MANAGER2.

之下
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'
)