2016-06-28 80 views
-1

以下是我的查詢。我從Employee表中取得socail sercurity no,並將其與child_excel表匹配。使用該工具,我獲得了Employee ID並將其與EmployeeCh表(具有員工ID)進行匹配。員工有兩個孩子,所以當我把性別條款放在一起時,我爲每個孩子的每個孩子(即男性,女性)得到4條記錄2。我只想爲每個孩子分配兩個孩子,每個孩子都有兩個不同的性別。使用連接從2個表中獲取不同的數據

SELECT distinct 
     [SSN], 
     empch2.GenderID, 
     gen.Name1 
    FROM [child_excel] as t 
    INNER JOIN Employee as empch on t.SSN = empch.SocialSecurityNo 
    INNER JOIN EmployeeCh as empch2 on empch.ID = empch2.EmployeeID 
    INNER JOIN Gender as gen on empch2.GenderID = gen.ID 

我得到O/P爲

12345 1 Male 
12345 2 Female 
99999 1 Male 
99999 2 Female 

預計產量

12345 1 Male 
99999 2 Female 

但是,當我在加入添加名字它給適當的輸出。我硝基甲苯想用的名字

SELECT distinct 
      [SSN], 
      empch2.GenderID, 
      gen.Name1 
     FROM [child_excel] as t 
     INNER JOIN Employee as empch on t.SSN = empch.SocialSecurityNo 
     INNER JOIN EmployeeCh as empch2 on empch.ID = empch2.EmployeeID and t.First_Name= empch2.FirstName 
     INNER JOIN Gender as gen on empch2.GenderID = gen.ID 
+0

SSN是不一樣的。你想在分組中使用哪個SSN? – NEER

+0

我需要儘可能多的不同記錄,但每個唯一行只需要1條記錄。 – user2998990

+0

無所謂哪一行? – NEER

回答

0

使用ROW_NUMBER()

Select * from (

SELECT distinct 
     [SSN], 
     empch2.GenderID, 
     gen.Name1, 
     ROW_NUMBER()OVER(PARTITION BY [SSN] ORDER BY empch2.GenderID)RN 
    FROM [child_excel] as t 
    INNER JOIN Employee as empch on t.SSN = empch.SocialSecurityNo 
    INNER JOIN EmployeeCh as empch2 on empch.ID = empch2.EmployeeID and t.First_Name= empch2.FirstName 
    INNER JOIN Gender as gen on empch2.GenderID = gen.ID)T 
    WHERE T.RN = 1 
+0

這裏我得到1個記錄數據時間。我想要很多不同的記錄。 – user2998990

+0

,但根據您的示例數據,它會給出正確的結果,並且還會區分@ user2998990 – mohan111

相關問題