【问题标题】:How to find duplicate entries with different values in one column SQL Server 2008 R2如何在一列 SQL Server 2008 R2 中查找具有不同值的重复条目
【发布时间】:2015-09-16 03:30:02
【问题描述】:

我已尝试搜索此站点,但无济于事。我不知道如何恰当地表达我的问题,但这里是:

我有一张桌子,里面有多家公司的员工。他们都有一个唯一的员工编号 (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

【问题讨论】:

  • 具有预期输出的样本数据将有很大帮助。也请阅读How to askHow to create a Minimal, Complete, and Verifiable example.
  • 这张表有主键吗?
  • 您在寻找重复的条目吗?喜欢;公司 A 的员工 1 有 2 个或更多条目?还是您只想查看 Employee1 拥有的所有公司的列表?
  • 编辑了问题以包含具有所需结果的示例数据集。我将尝试重新提出我的问题。布赖恩,是的,我正在寻找重复的条目,但它们有一个列,每个重复条目都会有所不同。

标签: sql sql-server


【解决方案1】:

你可以试试这个

   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

【讨论】:

    【解决方案2】:

    尝试:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-23
      • 1970-01-01
      • 1970-01-01
      • 2017-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-21
      相关资源
      最近更新 更多