Is it possible to add a group string name to a grouped set in T-SQL
Name | NO |
---------+------------+
A | 1 |
B | 1 |
C | 1 |
E | 2 |
F | 2 |
G | 2 |
Output Name join in String.
Name | NO |
---------+------------+
A,B,C | 1 |
E,F,G | 2 |
Declare @tbG Table(idx int , Name nvarchar(250))
Insert into @tbG values (1,'A'),(1,'B'),(1,'C'),(2,'E'),(2,'F'),(2,'G');
SELECT Name, idx AS column_names
FROM @tbG AS extern
CROSS APPLY
(
SELECT Name + ','
FROM @tbG AS intern
WHERE extern.idx = intern.idx
FOR XML PATH('')
) pre_trimmed (column_names)
GROUP BY idx, Name;
I thinks below is my solution but I can not replace example.
SELECT table_name, LEFT(column_names , LEN(column_names )-1) AS column_names
FROM information_schema.columns AS extern
CROSS APPLY
(
SELECT column_name + ','
FROM information_schema.columns AS intern
WHERE extern.table_name = intern.table_name
FOR XML PATH('')
) pre_trimmed (column_names)
GROUP BY table_name, column_names;