2011-02-17 96 views
2

我有一個100人的員工表。我想編寫一個查詢來查找具有相同BIRTHDATE的僱員對。查詢查找具有相同出生日期的員工對

結果應爲該對中的每個員工(6列結果表)返回EMPNO,LASTNAME和BIRTHDATE。

我想類似的東西

SELECT t1.EmpNo 
     ,t1.LastName 
     ,t1.BirthDate 
     ,t2.EmpNo 
     ,t2.LastName 
     ,t2.BirthDate 
    FROM Employee t1 
    INNER JOIN (
    SELECT EmpNo 
     ,LastName 
     ,BirthDate 
    FROM Employee) t2 ON t2.BirthDate = t1.BirthDate 
    WHERE t2.EmpNo != t1.EmpNo 

你是否認爲這是正確的嗎?

+0

我嘗試投票,但是我有這個消息'投票需要15聲望' – dali1985 2011-02-17 10:10:32

回答

3

我只想做:

SELECT t1.EmpNo, 
     t1.LastName, 
     t1.BirthDate, 
     t2.EmpNo, 
     t2.LastName, 
     t2.Birthdate 
FROM Employee t1, Employee t2 
WHERE t1.BirthDate = t2.Birthdate 
AND t1.EmpNo <> t2.EmpNo 
+0

這實際上與user617850提出的`INNER JOIN`相同。 – anothershrubery 2011-02-17 09:54:08

+0

非常感謝。如果我想找到一對生日相同的生日,每個生日的年份爲 。每個員工再次返回EMPNO,LASTNAME和BIRTHDATE。你知道我該怎麼做? – dali1985 2011-02-17 10:16:00

+0

假設`BirthDate`是一個實際的日期變量。 'WHERE'語句應該是'WHERE DAY(t1.BirthDate)= DAY(t2.BirthDate)AND MONTH(t1.BirthDate)= MONTH(t2.BirthDate)AND t1.EmpNo <> t2.EmpNo' – anothershrubery 2011-02-17 10:42:55

1

它看起來正確的,但我會刪除第二選擇.. 子查詢

SELECT 
t1.EmpNo ,t1.LastName ,t1.BirthDate ,t2.EmpNo ,t2.LastName ,t2.BirthDate 
FROM Employee t1 
INNER JOIN Employee t2 ON t2.BirthDate = t1.BirthDate 
WHERE t2.EmpNo != t1.EmpNo 
0

我還想補充一點,t1.EmpNo<t1.EmpNO避免repetions的條件。

-1

這是我的回答

Select name, date From employees Group by date of birth Having count(*)>1;

相關問題