我有以下数据表
emp_no emp_name login HOD_code Level E43057 Ankita Barde 9:45 P00212 Direct E33995 Rakesh Sharma 8:15 P00212 Direct E31446 Amit Singh 10:45 P00212 Direct E44920 Shweta Salve 9:38 E33995 Indirect E39787 Anita Shenoy 9:15 E31446 Indirect E37731 Ramesh Shukla 9:10 E31446 Indirect E43455 Manish Shukla 11:01 E33995 Indirect E43130 Lubna Shaikh 9:39 E33995 Indirect
在上表中,我有一个HOD代码(P00212)优于所有员工,在P00212下映射的员工在LEVEL列中被指定为直接员工,而所有其他员工都是P00212的间接员工。但是这个间接员工是在直接员工下映射的 例如:P00212是Rakesh Sharma的HOD(E33995),E33995是其他3个人的HOD,即Shweta(E44920),E43455,E43130。所以我想以这样的方式编写查询,使输出看起来像下面的
输出:
emp_no emp_name login HOD_NO Level E43057 Ankita Barde 9:45 P00212 Direct E33995 Rakesh Sharma 8:15 P00212 Direct E43455 Manish Shukla 11:01 E33995 Indirect E43130 Lubna Shaikh 9:39 E33995 Indirect E44920 Shweta Salve 9:38 E33995 Indirect E31446 Amit Singh 10:45 P00212 Direct E39787 Anita Shenoy 9:15 E31446 Indirect E37731 Ramesh Shukla 9:10 E31446 Indirect
我该怎么做?
答案 0 :(得分:4)
select * from t
order by CASE WHEN HOD_CODE='P00212' THEN EMP_NO ELSE HOD_CODE END,
CASE WHEN HOD_CODE='P00212' THEN 0 ELSE 1 END
答案 1 :(得分:1)
您可以尝试以下内容:
select
*,
case
when (HOD_CODE='P00212')
then emp_no
else HOD_code
end as Parent
from Table
Order by Parent, Emp_No