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