【问题标题】:T-SQL: Combine rows to one row [duplicate]T-SQL:将行合并为一行[重复]
【发布时间】:2015-09-05 19:31:25
【问题描述】:

我有下表:

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 解决这个问题?提前致谢。

【问题讨论】:

标签: sql sql-server database tsql


【解决方案1】:

我开始了,所以我也可以发布我的...

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

【讨论】:

  • 谢谢。这正是我需要的!
【解决方案2】:

你需要使用FOR XML这里是一个演示它是如何工作的SQL FIDDLE

【讨论】:

  • 请不要发布“仅链接”的答案。链接的内容可能会消失。发布实际代码。
猜你喜欢
  • 1970-01-01
  • 2014-09-01
  • 2019-09-25
  • 1970-01-01
  • 2023-03-21
  • 2022-01-15
  • 1970-01-01
  • 2011-12-21
  • 1970-01-01
相关资源
最近更新 更多