2015-08-14 32 views
0

我有一張員工表,所有員工都在其中。我需要用他們相應的主管提取一部分員工。該表類似於這樣:從員工中刪除重複自我加入

Emp_id | F_name | L_name | Superv_id | Superv_flg 
--------------------------------------------------- 
123  john  doe  456   N 
456  jane  doe  278   Y 
234  Jack  smith 268   N 

我的查詢看起來像這樣至今:

with cte as 
(
    select f_name + ' ' l_name as supervisor, superv_id, emp_id 
     from [dbo].[SAP_worker_all] 
     where supvr_flag = 'Y' 
    ) 
    SELECT distinct w.[first_name] 
      ,w.[last_name] 
      ,cte.supervisor 
FROM [dbo].[SAP_worker_all] w 
join cte 
     on w.[superv_id] = cte.[superv_id]; 

我得到重複值,返回上司不正確的值。我做錯了什麼?

+0

沒有supvr_worker_no並沒有W上。顯示一些努力。 – Paparazzi

+0

編輯原始問題,試圖保留公司信息超出我發佈的代碼的錯誤。 – CodeMonkey

回答

1

如果EMPID是獨一無二的,你不應該有重複

SELECT w.*, s.* 
FROM [SAP_worker_all] w 
JOIN [SAP_worker_all] s 
    ON s.[Emp_id] = w.[Superv_id] 
    AND s.[Superv_flg] = 'Y' 
+0

很簡單,謝謝。我不能相信我忽略了這一點。 – CodeMonkey