2012-03-07 107 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 

享受