我有3张桌子。我需要从第一个表中获取姓氏,名字和员工编号,并从另一个表中获取名称。
为了让我在表格上得到名字,桌子上的slsrep列和表格sw之间需要匹配。
问题是我只想从第一个表(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
答案 0 :(得分:2)
有很多方法可以做到这一点。一种是使用子选择来获取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