I think a lot of people solve this with the STUFF
function. I found an example from this linkthis link and adapted it.
SET NOCOUNT ON
DECLARE @Table TABLE (StringText VARCHAR(100))
DECLARE @ConcatString VARCHAR(100)
INSERT INTO @Table VALUES ('Tom')
INSERT INTO @Table VALUES ('Dick')
INSERT INTO @Table VALUES ('Harry')
SELECT @ConcatString = STUFF((
SELECT ',' + StringText
FROM @Table
ORDER BY StringText
FOR XML PATH(''), TYPE).value('.', 'VARCHAR(MAX)'),1,1,'')
PRINT @ConcatString
As Dan Guzman points out in the comments, specifying TYPE and value method avoids entity references in the resultant string for special characters like ampersand.