В MS SQL вы можете использовать FOR XML, используя функцию Stuff для удаления лишнего разделителя.К сожалению, нет групповой функции concat, как в MySQL.
CREATE TABLE #ProductExpert (ProductName nvarchar(20), AccountExpert nvarchar(20))
INSERT INTO #ProductExpert(ProductName, AccountExpert) SELECT
'Tea', 'JohnSmith' UNION ALL SELECT
'Banana', 'GarySulvan' UNION ALL SELECT
'Water', 'JohnSmith' UNION ALL SELECT
'Candy', 'BobbySimmons' UNION ALL SELECT
'ConfecItem', 'BobbySimmons' UNION ALL SELECT
'Bread', 'JohnSmith' UNION ALL SELECT
'Soda', 'JohnSmith'
SELECT DISTINCT
ae.AccountExpert,
Stuff((
SELECT
'; ' + p.ProductName
FROM
#ProductExpert AS p
WHERE
ae.AccountExpert = p.AccountExpert
ORDER BY
p.ProductName
FOR XML PATH('')
), 1, 2, '') AS Products
FROM
#ProductExpert AS ae
ORDER BY
ae.AccountExpert
DROP TABLE #ProductExpert