Concatenate string column values for a given group into a comma (or any character) separated list of values in SQL Server 2005+

Sometimes we need to convert (concatenate) string column values for a given group into a comma (or any character) separated list of values.
e.g.:
We have a table as below:

We want an output as below:

here is one way of doing this in Ms-SQL 2005/2008 using FOR XML PATH(”)
Select NoteID, STUFF ((SELECT ',' + a.Comments
from Notes a where a.NoteID = b.NoteID Order by a.Comments
for xml PATH('')),1,1,'') AS Comments_Concatenated
from Notes b group by NoteID ORDER BY NoteID