2012-03-07 61 views
-3

说我有一个表,如下所示SQL服务器查找重复

Employee RecNumber 
Joe Bloggs 123456 
Joe Bloggs 123456 
Bob Bloggs 123457 
Dup Bloggs 123456 

而我只是想回到所有录制的数字,其中2人有过这不应该发生在同一RecNumber。 注意,一个人可以有相同的请求数量的多次我只是想回来,在那里2人有相同的REC数

因此,所有我想要返回的

123456 
+2

你能clarif你好吗?添加另一行'Bob Bloggs','123457' - 你不想让这个返回正确,因为它是同一个人(呃,一个同名的人,希望你没有两个叫Bob Bob的人,但是在一般来说,这是一种让人分开的可怕方式,因为有些名字很常见)。 – 2012-03-07 18:18:36

+0

您是否也可以指定是否需要2个或更多人使用相同的RecNumber,因为有些人认为这意味着您只关心2个。 2012-03-07 18:27:04

回答

2
select record_number 
    from my_table 
    group by record_number 
    having count(distinct employee) > 1 
+0

有趣的是,我怀疑样本数据并不能真正让我们区分他的意思和他的单词问题。 – 2012-03-07 18:17:43

0
SELECT A.RECNUMBER,COUNT(B.EMPLOYEE) 
(SELECT DISTINCT RECNUMBER FROM YOURTABLE) A, 
YOURTABLE B 
WHERE A.RECNUMBER = B.RECNUMBER 
GROUP BY A.RECNUMBER 
HAVING COUNT(B.EMPLOYEE)=2; 
+1

为什么= 2?如果他们有3或4或5或更多? – 2012-03-07 18:17:05

+0

Steve只问了两个人的问题。 – Teja 2012-03-07 18:19:14

+0

对,但你认为他的桌子只有4排吗?他只在他的样本数据中显示了两场比赛,但我认为我们可以推断。 – 2012-03-07 18:21:38

0

像这样的事情?

SELECT RecNumber FROM Table GROUP BY RecNumber HAVING COUNT(*) > 1 
0
SELECT RecNumber FROM [a table] 
GROUP BY RecNumber HAVING COUNT(*) > 1; 

或许

SELECT RecNumber FROM (SELECT RecNumber, Employee 
    FROM [a table] 
GROUP BY RecNumber, Employee HAVING COUNT(*) > 1 
) AS x; 
+0

这将只是返回所有重复recNumber即时看起来如果2名员工具有相同的 – StevieB 2012-03-07 18:17:52

+0

这就是为什么我要求澄清,因为您的示例数据是模糊不清。我还添加了替代解释。 – 2012-03-07 18:22:07

0

你可以写这样的事情,我认为它的工作:

use *DATABASE_NAME* 
go 
select *Your_Field*, Nbre=count(*Your_Field*) from *TABLE_NAME* 
group by *Your_Field* 
having count(*Your_Field*)>1 
order by 2 desc 

享受