如何 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 来完成。
我有以下工作查询:
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 来完成。