如何在一列SQL Server 2008 R2中查找具有不同值的重复条目

时间:2015-09-15 15:47:02

标签: sql sql-server

我试过搜索这个网站但无济于事。我不知道如何正确地说出我的问题,但这里有:

我有一张桌子,里面有来自多家公司的员工。他们都有一个独特的员工编号(Num),但可以属于几个不同的公司(Comp)。问题是我们为员工所属的每家公司都有一个单独的条目。我需要能够找到每个有多个条目的员工,以及他们所属的所有公司(Comp)。

我想不出一个解决方案,不能将所有公司分成临时表,并将所有公司与重复记录进行比较。

以下是一个例子:

如果我在表格中有以下内容,

Comp     Num  FName  MI  LName
McD's    1    Dick   H   Harper
BrgrKng  1    Dick   H   Harper
Wendy's  2    Jane   B   Doe
Arby's   3    John   G   Doe

我想要以下结果:

Comp     Num  FName  MI  LName
McD's    1    Dick   H   Harper
BrgrKng  1    Dick   H   Harper

我有以下代码:

SELECT Comp, Num, FName, MI, LName
FROM Employees
HAVING COUNT(Num) > 1
ORDER BY LName, FName, MI

由于HAVING子句并尝试显示Comp和Num,此代码不起作用。

每当我尝试运行它时,我都会收到预期的错误消息:

  

专栏' Employees.Comp'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中。

没有将所有公司分离出去'员工并将每家公司与每家公司进行比较,我该怎么办?

旁注:

以下条目均无效:

How to Find Rows which are Duplicates by a Key but Not Duplicates in All Columns?

Find duplicates for several columns exclusive ID-column

Finding duplicate values in a SQL table

2 个答案:

答案 0 :(得分:5)

你可以试试这个

   SELECT Comp, Num, FName, MI, LName
    FROM Employees e1
    WHERE EXISTS(SELECT 1 FROM Employees e2 WHERE e1.Num = e2.Num AND e1.Comp <> e2. Comp)
    ORDER BY LName, FName, MI

SQL Fiddle

答案 1 :(得分:0)

尝试:

SELECT Comp, Num, FName, MI, LName
FROM Employees e inner join
(select num
from Employees 
group by num
having count(distinct comp)>1) d on
e.num = d.num