我有3张桌子。我需要从第一个表中获取姓,名和雇员编号,并从另一个表中获取名称。
为了使我在表s上获得名称,需要在表s和表sw的slsrep列之间进行匹配。
问题是我只想返回第一个表(p)中的行。第一张表中只有700条记录,但它正在拉900条记录。
基本上,我只想查看表p中的每一行并匹配表s中的名称。
这是我目前拥有的:
SELECT p.LastName,
p.FirstName,
p.EmpNo,
s.Name
FROM PDDA..PhoneDirectory p
LEFT OUTER JOIN nxtsql..swsmsn sw
ON p.EmpNo = sw.EmpNo
JOIN NxtSQL..SMSN s
ON sw.slsrep = s.slsrep
WHERE sw.statustype = 1
ORDER BY
p.LastName
有很多方法可以做到这一点。一种是使用子选择来获得s.Name:
SELECT p.LastName, p.FirstName, p.EmpNo, (
SELECT TOP 1 s.Name
FROM NxtSQL..SMSN s
INNER JOIN nxtsql..swsmsn sw
ON sw.slsrep = s.slsrep
WHERE p.EmpNo = sw.EmpNo
AND sw.statustype = 1
) AS Name
FROM PDDA..PhoneDirectory p
ORDER By p.LastName
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句