3

我有下表的数据

emp_no emp_name login HOD_code 级别  
E43057 Ankita Barde 9:45 P00212 直接
E33995 Rakesh Sharma 8:15 P00212 直接
E31446 阿米特辛格 10:45 P00212 直接
E44920 Shweta Salve 9:38 E33995 间接   
E39787 Anita Shenoy 9:15 E31446 间接   
E37731 拉梅什舒克拉 9:10 E31446 间接   
E43455 Manish Shukla 11:01 E33995 间接   
E43130 Lubna Shaikh 9:39 E33995 间接

在上表中,我有一个 HOD 代码 (P00212) 优于所有,因此在 P00212 下映射的员工在 LEVEL 列中指定为直接员工,所有其他人都间接到 P00212。但是这种间接员工映射在直接员工下例如:P00212 是 Rakesh Sharma (E33995) 的 HOD,E33995 是其他 3 名员工的 HOD,即 Shweta(E44920)、E43455、E43130。所以我想以这样的方式编写一个查询,输出将如下所示

输出:

emp_no emp_name login HOD_NO 级别    
E43057 Ankita Barde 9:45 P00212 直接

E33995 Rakesh Sharma 8:15 P00212 直接   
E43455 Manish Shukla 11:01 E33995 间接
E43130 Lubna Shaikh 9:39 E33995 间接
E44920 Shweta Salve 9:38 E33995 间接

E31446 阿米特辛格 10:45 P00212 直接   
E39787 Anita Shenoy 9:15 E31446 间接
E37731 拉梅什舒克拉 9:10 E31446 间接

我怎样才能做到这一点?

4

2 回答 2

4

SQLFiddle 示例

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
于 2013-02-01T12:39:44.330 回答
1

您可以尝试以下方法:

select 
    *, 
    case 
        when (HOD_CODE='P00212') 
        then emp_no 
        else HOD_code 
    end as Parent
from Table
Order by Parent, Emp_No

SQL小提琴

于 2013-02-01T12:44:09.060 回答