Thursday, March 29, 2018

sql server - T-SQL: Combine rows to one row




I have the following table:



number  word
====== ====
1 AAA
2 BBB
2 CCCC
4 CCCC

4 BBB
4 AAA


Now I want to create a new table, where a "number" only occurs in one row. The corresponding values in "word" should be converted to comma sepeareted string.



The result table:



number  word
====== ====

1 AAA
2 BBB,CCCC
4 CCCCC,BBB,AAA


How can this solved with T-SQL? Thanks in advance.


Answer



I started so I may as well post mine too...



CREATE TABLE #test

(
ID tinyint
,Word varchar(20)
);
INSERT INTO #test
VALUES
(1,'aaa')
,(1,'bbb')
,(2,'abc')
,(2,'def')

,(2,'ghi')
,(3,'zzz');

SELECT DISTINCT
a.ID
,STUFF((
SELECT
',' + b.Word
FROM #test b
WHERE a.ID = b.ID

FOR XML PATH('')
),1,1,'') AS [Contains]
FROM #test a

No comments:

Post a Comment

plot explanation - Why did Peaches' mom hang on the tree? - Movies & TV

In the middle of the movie Ice Age: Continental Drift Peaches' mom asked Peaches to go to sleep. Then, she hung on the tree. This parti...