如何 return 新列中的结果

How to return the results in a new column

我有以下工作查询:

    SELECT *
    FROM EMPLOYEE_HISTORY
    WHERE supervisor_login_name IN (select login_name from EMPLOYEE_HISTORY WHERE supervisor_login_name IN ('a','b','c','d','e')                     
    and is_active_record = 'Y'
    and is_employed = 'Y' ) and is_active_record = 'Y'
    and is_employed = 'Y'
    OR supervisor_login_name IN (select supervisor_login_name from EMPLOYEE_HISTORY WHERE supervisor_login_name IN ('a','b','c','d','e') 
    and is_active_record = 'Y'
    and is_employed = 'Y')
    and is_active_record = 'Y'
    and is_employed = 'Y'
    
    OR supervisor_login_name IN (select login_name from EMPLOYEE_HISTORY WHERE supervisor_login_name IN(select login_name from EMPLOYEE_HISTORY WHERE supervisor_login_name in ('a','b','c','d','e') and is_active_record = 'Y'
    and is_employed = 'Y')
    and is_active_record = 'Y'
    and is_employed = 'Y')
    and is_active_record = 'Y'
    and is_employed = 'Y'

并且我尝试过:

    SELECT *
    FROM EMPLOYEE_HISTORY 
    
    WHERE supervisor_login_name IN (select T1.login_name from EMPLOYEE_HISTORY as T1 Join EMPLOYEE_HISTORY as T2 ON T2.supervisor_login_name = T1.supervisor_login_name WHERE T1.supervisor_login_name IN ('a','b','c','d','e')                    
    and T1.is_active_record = 'Y'
    and T1.is_employed = 'Y' 
    Union Select supervisor_login_name from EMPLOYEE_HISTORY As "ops" where supervisor_login_name in ('a','b','c','d','e')) and is_active_record = 'Y'
    and is_employed = 'Y'
    OR supervisor_login_name IN (select T1.supervisor_login_name from EMPLOYEE_HISTORY as T1 Join EMPLOYEE_HISTORY as T2 ON T2.supervisor_login_name = T1.supervisor_login_name WHERE T1.supervisor_login_name IN ('a','b','c','d','e')
    and T1.is_active_record = 'Y'
    and T1.is_employed = 'Y'
    Union Select supervisor_login_name from EMPLOYEE_HISTORY As "ops" where supervisor_login_name in ('a','b','c','d','e'))
    and is_active_record = 'Y'
    and is_employed = 'Y'
    
    OR supervisor_login_name IN (select login_name from EMPLOYEE_HISTORY  WHERE supervisor_login_name IN(select T1.login_name from EMPLOYEE_HISTORY as T1 Join EMPLOYEE_HISTORY as T2 ON T2.supervisor_login_name = T1.supervisor_login_name WHERE T1.supervisor_login_name in ('a','b','c','d','e')
    and T1.is_active_record = 'Y' 
    and T1.is_employed = 'Y'
    Union Select supervisor_login_name from EMPLOYEE_HISTORY As "ops" where supervisor_login_name in ('a','b','c','d','e'))
    and is_active_record = 'Y'
    and is_employed = 'Y')
    and is_active_record = 'Y'
    and is_employed = 'Y'

如何 return 我的“ops”列到结果? 提示:我正在尝试 return“操作”栏中的经理的经理

我正在尝试获取“ops”列。我有 login_name(员工)和 supervisor_login_name(员工的经理),我想用经理的经理创建一个列“ops”,因为来自 supervisor_login_name 的用户已经在 login_name 中,所以我想 return 来自 login_name 的案例也在 supervisor__login_name 中,并从 supervisor_login_name.

这是我所拥有的和我想要的例子:

+------------+-----------------------+-----+
| login_name | supervisor_login_name | ops |
+------------+-----------------------+-----+
| a          | e                     | y   |
| b          | f                     | z   |
| c          | g                     | w   |
| d          | h                     | x   |
| e          | y                     |     |
| f          | z                     |     |
| g          | w                     |     |
| h          | x                     |     |
+------------+-----------------------+-----+

所以基本上我想 return 目前 exist.I 不想创建的列“ops”

这是table结构:

我假设 login_name 是基于您的 table 结构的 employee_name。 此外,根据您的初始查询,我假设我们对既活跃又在职的员工感兴趣(is_employed = 'Y' 和 is_active_record = 'Y')

SELECT e.employee_name as login_name
      ,e.supervisor_login_name
      ,s.supervisor_login_name as ops
FROM EMPLOYEE_HISTORY e
LEFT JOIN EMPLOYEE_HISTORY s 
     ON e.supervisor_login_name = s.employee_name 
     AND s.is_employed = 'Y' 
     AND s.is_active_record = 'Y' 
WHERE e.is_employed = 'Y' 
      AND e.is_active_record = 'Y' 

话虽这么说,但我认为如果可能的话,link 最好使用 employee_id 和 supervisor_id 来完成。