T-SQL:将行组合成一行

时间:2015-06-19 18:01:15

标签: sql sql-server database tsql

我有下表:

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

现在我要创建一个新表,其中一个"数字"仅出现在一行中。 " word"中的相应值应转换为逗号分隔字符串。

结果表:

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

如何用T-SQL解决这个问题?提前谢谢。

2 个答案:

答案 0 :(得分:2)

我开始这样我也可以发布我的...

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

答案 1 :(得分:0)

您需要使用FOR XML以下是其工作原理的演示SQL FIDDLE