3

次のデータ付きのテーブルがあります

emp_no emp_name ログイン 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 アニタ・シェノイ 9:15 E31446 間接   
E37731 Ramesh Shukla 9:10 E31446 間接   
E43455 マニッシュ シュクラ 11:01 E33995 間接   
E43130 ルブナ・シェイク 9:39 E33995 間接

上記の表では、1 つの HOD コード (P00212) がすべての従業員よりも上位であるため、P00212 の下にマップされている従業員は LEVEL 列で直接従業員として指定され、その他はすべて P00212 に間接的です。ただし、この間接従業員は直接従業員の下にマッピングされます。たとえば、P00212 は Rakesh Sharma (E33995) の HOD であり、E33995 は他の 3 人の従業員、つまり Shweta (E44920)、E43455、E43130 の HOD です。したがって、出力が次のようになるようにクエリを記述したいと思います

出力:

emp_no emp_name ログイン HOD_NO レベル    
E43057 Ankita Barde 9:45 P00212 ダイレクト

E33995 Rakesh Sharma 8:15 P00212 ダイレクト   
E43455 マニッシュ シュクラ 11:01 E33995 間接
E43130 ルブナ・シェイク 9:39 E33995 間接
E44920 Shweta Salve 9:38 E33995 間接

E31446 アミット・シン 10:45 P00212 直接   
E39787 アニタ・シェノイ 9:15 E31446 間接
E37731 Ramesh Shukla 9:10 E31446 間接

これどうやってするの?

4

2 に答える 2

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 に答える