选择递归查询

问题描述 投票:0回答:1

我有两个包含员工姓名(TableB)和员工层次结构(TableA)的表(来自TableA的manager_id可以是同一表中的employee_id。]

TableA
UniqueId    Employee_ID Manager_ID
1            101         102
2            102         103
3            103         104
4            105         106
5            106         null


TableB
Employee_ID  Employee_Name
101          First
102          Second
103          Third
104          Fourth
105          Fifth
106          Sixth

并且我需要如下输出:

Employee_ID Employee_Name   Transferred
101         First           True
102         Second          True
103         Third           True
105         Fifth           False
106         Sixth           False

每个雇员的已转移列的计算公式为=

isTransferred(Employee_ID)
{
    If(Manager_ID  is null) return false;
    If(Manager_ID is present as employee_id in table A)
    {
       return isTransferred(manager_ID)
    }
    else
    {
       return true;
    }
}

有没有办法在一个select语句中获得结果?

sql oracle recursive-query
1个回答
0
投票

看起来您正在寻找joincase

   select employee_id, 
          employee_name, 
          case when a.manager_id=b.employee_id or a.manager is null then 'True' else 'False' end as transferred
    from table_a
    inner join table_b on a.employee_id=b.employee_id;
© www.soinside.com 2019 - 2024. All rights reserved.