• A csv list can also be generated using "FOR XML"

    I rewrote the final query using this method:

    SELECT OfficeID, 
    (SELECT TOP(1)
    C.StateAbbr
    FROM dbo.OfficeCounty OC
    INNER JOIN dbo.County C
    ON C.CountyId = OC.CountyID
    WHERE OC.OfficeID = O.OfficeID) AS StateAbbr,
    STUFF((SELECT ',' + CountyName
    FROM dbo.OfficeCounty OC
    INNER JOIN dbo.County C
    ON C.CountyId = OC.CountyID
    WHERE OC.OfficeID = O.OfficeID
    ORDER BY CountyName
    FOR XML PATH('')),1,1,'') AS countrynames
    FROM dbo.Office O
    ORDER BY 2