如果每个员工有多个联系人值,我会得到多行,但我只希望每个员工有一行列出他们的姓氏、名字、部门名称、电子邮件和电话。
所以它应该像这样
First Name Last Name Division Email Phone
Test Guy Exec test@gmail.com 555-5555
这是我所拥有的,但它不起作用:
SELECT sr.LastName, sr.FirstName, dd.Name,
Email = (select sc.ContactValue FROM StaffContactInformation as sc
INNER JOIN StaffRoster as roster on sc.StaffID = roster.ID
where sc.ContactTypeID = 3 and roster.ID = sr.ID),
Phone = (SELECT sc1.ContactValue FROM StaffContactInformation as sc1
INNER JOIN StaffRoster as roster on sc1.StaffID = roster.ID
where sc1.ContactTypeID = 1)
FROM StaffRoster as sr
left join dictDivisions as dd on sr.DivisionID = dd.Id
left join StaffContactInformation as sci on sr.ID = sci.StaffID
inner join dictStaffContactTypes as dsct on sci.ContactTypeID = dsct.ID
where (sr.Active = 1 and sr.isContractor = 0 )
ORDER BY sr.LastName, sr.FirstName
我通过以下查询解决了它:
SELECT sr.LastName, sr.FirstName, dd.Name,
Email = (select sc.ContactValue FROM StaffContactInformation as sc
INNER JOIN StaffRoster as roster on sc.StaffID = roster.ID
where sc.ContactTypeID = 3 and roster.ID = sr.ID),
Phone = (SELECT sc.ContactValue FROM StaffContactInformation as sc
INNER JOIN StaffRoster as roster on sc.StaffID = roster.ID
where sc.ContactTypeID = 1 and roster.ID = sr.ID)
FROM StaffRoster as sr
left join dictDivisions as dd on sr.DivisionID = dd.Id
where (sr.Active = 1 and sr.isContractor = 0 )
ORDER BY sr.LastName, sr.FirstName