-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来自...'而根本不加入类型表。如果你不能,请解释为什么不。 –