Примерно так будет работать:
SELECT TOP 5 CA.Id AS ArticleID, CA.Title as ArticleTitle,
stuff( (SELECT ', '+CC.Name
FROM CrossArticle_ArticleToCategory A2C
INNER JOIN CrossArticle_Category CC ON A2C.CategoryId = CC.Id
WHERE A2C.ArticleId = CA.Id
ORDER BY CC.Name
FOR XML PATH ('')
), 1, 2, '') as Categories
FROM CrossArticle_Article CA
Это даст вам по одной строке на статью со списком категорий через запятую.
Это будет выглядеть так (я проверял, поэтому правильно):
ArticleID Article Title Categories
5685 AlkjTechv Hardware
5684 Show Report... Gear, News
5683 Radi-something introduces Gear, News
У меня есть только 3 ответа, потому что вы дали только пример данных для 3 результатов.
Как примечание: это намного быстрее, чем пользовательский агрегат.
Если категории не имеют значения, такой выбор даст вам все названия:
SELECT TOP 5 CA.Id AS ArticleID, CA.Title as ArticleTitle,
FROM CrossArticle_Article CA