2

複数の連絡先の値がある場合、スタッフごとに複数の行を取得していますが、姓、名、部門名、電子メール、および電話番号をリストするスタッフごとに 1 つの行が必要です。

だから、このようにする必要があります

    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
4

2 に答える 2