如何使用sql查询在一个字段下对相同字段进行分组

时间:2013-02-01 12:08:15

标签: mysql sql group-by

我有以下数据表

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 

我该怎么做?

2 个答案:

答案 0 :(得分:4)

SQLFiddle Example

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

SQL Fiddle