条件满足时选择不重复的值

时间:2017-09-25 20:53:41

标签: sql-server tsql

我有两个表基于它们之间的公共表连接,当一个案例条件满足时,我需要输出中两个表中的一个列。我看到两列都返回了各自的记录,但我发现了一个问题。我看到重复,我不确定我在这里做错了什么。随附图片enter image description here,其中包含更多详细信息。

2 个答案:

答案 0 :(得分: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
;

答案 1 :(得分:0)

尝试分组

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