2

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;
Cœur
  • 37,241
  • 25
  • 195
  • 267

0 Answers0