why take off what you don't need to add on?
let me explain more clearly...
every time you add a term to the list, you're adding a comma-space after it, and the thing is, you don't know when the list is finished, so lopping off the trailing comma is a second operation, not to mention tricky if you have to ask for help on it
my idea is, the other end of the list, the front end, you definitely do know when you've reached it, and that's right at the beginning of your concatenation process, right?
okay, so change this --
ISNULL(I.Name, '') + ', '
to this --
ISNULL(I.Name+ ', ' , '')
ah, the beauty of it