我试过搜索这个网站但无济于事。我不知道如何正确地说出我的问题,但这里有:
我有一张桌子,里面有来自多家公司的员工。他们都有一个独特的员工编号(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?
答案 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
答案 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