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