如何在SQL中合并具有特殊条件的重复行

时间:2015-11-20 02:06:40

标签: sql sql-server duplicates rows no-duplicates

我有一个有这种结构的表

ID    Word         description
-------------------------------
1     book       a lot of paper
2     book       a thing
3     book       an amazing thing
4     tv         television

我想将此表格转换为:

ID    Word         description
-------------------------------
1     book       a lot of paper,a thing,an amazing thing
2     tv         television

请注意:

- 最大重复次数为6次

- 我希望有一个没有重复行的表,我想将所有重复的行合并到一行,包含所有描述值。

感谢您的帮助...

2 个答案:

答案 0 :(得分:3)

你可以试试这个:

SELECT
    ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) AS Id,
    *
FROM (
    SELECT DISTINCT Word,
        STUFF((SELECT ',' + description
               FROM Your_Table
               WHERE Word = T.Word
               FOR XML PATH('')), 1, 1, '') AS description
    FROM Your_Table T) AS A

答案 1 :(得分:0)

在你的查询中,你应该按字分组并按描述连接

在mysql上测试过这个,不确定它是否可以在sql server上运行

SELECT id, GROUP_CONCAT(description SEPARATOR ', ')
FROM tablename GROUP BY word

和mssql服务器 尝试@mdahlman提供的答案

https://stackoverflow.com/a/106334/3664960