id Name
1  A
2  C
2  D
1  B
Output required through T-sql 
id Name
1  A,B
2  C,D
id Name
1  A
2  C
2  D
1  B
Output required through T-sql 
id Name
1  A,B
2  C,D
 
    
     
    
    Use this
;
WITH    SampleData
          AS ( SELECT   *
               FROM     ( VALUES ( 1, 'A'), ( 2, 'C'), ( 2, 'D'), ( 1, 'B'),
                        ( 1, 'C' ) ) T ( id, name )
             )
    SELECT  DISTINCT
            B.Id ,
            SUBSTRING(( SELECT  ',' + Name
                        FROM    SampleData AS A
                        WHERE   A.Id = B.ID
                      FOR
                        XML PATH('')
                      ), 2, 1000) AS NAME
    FROM    SampleData AS B
output result

 
    
    Here's another option:
SELECT   test.id,  test.Name+','+ Table1_1.Name AS Name
FROM         (SELECT     MIN(Name) AS Name, id
                       FROM          Table1
                       GROUP BY id) AS test RIGHT OUTER JOIN
                      Table1 AS Table1_1 ON test.id = Table1_1.id
                        where test.Name <>Table1_1.Name
