Sql server 使用join从两个表中获取不同的数据

Sql server 使用join从两个表中获取不同的数据,sql-server,join,Sql Server,Join,下面是我的问题。我从Employee表中获取socail sercurity no,并将其与child_excel表匹配。使用它,我获得雇员ID,并将其与EmployeeCh表(具有雇员ID)匹配。该员工有两个孩子,因此当我输入性别条款时,我会为每个孩子获得4条记录,每个孩子有不同的记录(即男性、女性)。我只想要2行,每个孩子1行,每个孩子有各自的性别 SELECT distinct [SSN], empch2.GenderID, gen.Name1 F

下面是我的问题。我从Employee表中获取socail sercurity no,并将其与child_excel表匹配。使用它,我获得雇员ID,并将其与EmployeeCh表(具有雇员ID)匹配。该员工有两个孩子,因此当我输入性别条款时,我会为每个孩子获得4条记录,每个孩子有不同的记录(即男性、女性)。我只想要2行,每个孩子1行,每个孩子有各自的性别

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
使用行号()


SSN不一样。分组中需要哪个SSN?我希望有尽可能多的不同记录,但每个唯一行只有一条记录。那么,哪一行无关紧要?我希望O/P为12345 1男99992女我每次获得一条记录数据。我想要尽可能多的不同的记录。但根据您的样本数据,它会给出正确的结果,并且@user2998990也是不同的
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