2017-09-25 66 views
-1

我有兩個表在它們之間的公共基礎上連接,當case條件滿足時,我需要輸出中兩個表中的每一列。我看到兩列都會返回它們各自的記錄,但我看到了一個問題。我看到重複,我不知道我在這裏做錯了什麼。附圖爲enter image description here,更多詳情。當條件符合時選擇沒有重複的值

+0

猜測你有typetable爲每個員工多行。每種類型一個。 –

+0

是的,所以我需要EmpID和EmpAltID,但EmpName只有一次,並且它們在類型表中有一個ID和一個備用ID。 – Sanj

+0

它總是有相同的ID,所以看起來你可以簡單地'選擇doctable.docnum,emptable.empnum,emptable.empid,emptable.empid作爲empaltid來自...'而根本不加入類型表。如果你不能,請解釋爲什麼不。 –

回答

2

你需要使用聚合功能和GROUP BY

SELECT d.docnum DocNumber, 
     e.empnam EmpName, 
     MAX(CASE 
       WHEN t.EmpTypID = '4' THEN e.EmpID 
      END) EmpID, 
     MAX(CASE 
       WHEN t.EmpTypID = '2' THEN e.EmpID 
      END) EmpAltID 
FROM DocTable d 
LEFT JOIN EmpTable e 
    ON d.docnum = e.docnum 
LEFT JOIN TypeTable t 
    ON e.docnum = t.docnum 
GROUP BY d.docnum, 
     e.empnam 
; 
0

嘗試分組依據

Select 
........ 
........ 
max(CASE 
       WHEN t.EmpTypID = '4' THEN e.EmpID 
      END) EmpID, 
......... 
GROUP BY d.docnum, 
     e.empnam 
;