如何在特殊情况下合并 SQL 中的重复行
How can i merge duplicate rows in SQL with an special condition
我有一个 table 这种结构
ID Word description
-------------------------------
1 book a lot of paper
2 book a thing
3 book an amazing thing
4 tv television
我想将此 table 转换为:
ID Word description
-------------------------------
1 book a lot of paper,a thing,an amazing thing
2 tv television
注意:
-最大重复次数为六次
-我想要一个没有重复行的 table,我想将所有重复行合并为包含所有描述值的一行。
感谢您的帮助...
在您的查询中,您应该按单词分组并按描述连接
已在 mysql 上测试过,不确定它是否适用于 sql 服务器
SELECT id, GROUP_CONCAT(description SEPARATOR ', ')
FROM tablename GROUP BY word
和 mssql 服务器
试试@mdahlman
提供的答案
你可以试试这个:
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
我有一个 table 这种结构
ID Word description
-------------------------------
1 book a lot of paper
2 book a thing
3 book an amazing thing
4 tv television
我想将此 table 转换为:
ID Word description
-------------------------------
1 book a lot of paper,a thing,an amazing thing
2 tv television
注意:
-最大重复次数为六次
-我想要一个没有重复行的 table,我想将所有重复行合并为包含所有描述值的一行。
感谢您的帮助...
在您的查询中,您应该按单词分组并按描述连接
已在 mysql 上测试过,不确定它是否适用于 sql 服务器
SELECT id, GROUP_CONCAT(description SEPARATOR ', ')
FROM tablename GROUP BY word
和 mssql 服务器 试试@mdahlman
提供的答案你可以试试这个:
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