-1
我有兩個表在它們之間的公共基礎上連接,當case條件滿足時,我需要輸出中兩個表中的每一列。我看到兩列都會返回它們各自的記錄,但我看到了一個問題。我看到重複,我不知道我在這裏做錯了什麼。附圖爲,更多詳情。當條件符合時選擇沒有重複的值
我有兩個表在它們之間的公共基礎上連接,當case條件滿足時,我需要輸出中兩個表中的每一列。我看到兩列都會返回它們各自的記錄,但我看到了一個問題。我看到重複,我不知道我在這裏做錯了什麼。附圖爲,更多詳情。當條件符合時選擇沒有重複的值
你需要使用聚合功能和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
;
嘗試分組依據
Select
........
........
max(CASE
WHEN t.EmpTypID = '4' THEN e.EmpID
END) EmpID,
.........
GROUP BY d.docnum,
e.empnam
;
猜測你有typetable爲每個員工多行。每種類型一個。 –
是的,所以我需要EmpID和EmpAltID,但EmpName只有一次,並且它們在類型表中有一個ID和一個備用ID。 – Sanj
它總是有相同的ID,所以看起來你可以簡單地'選擇doctable.docnum,emptable.empnum,emptable.empid,emptable.empid作爲empaltid來自...'而根本不加入類型表。如果你不能,請解釋爲什麼不。 –