Как я могу объединить дубликаты строк в SQL со специальным условием
У меня есть таблица с этой структурой
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
Обратите внимание, что:
-Максимальное количество дублирования шесть
-Я хочу иметь таблицу без повторяющихся строк, я хочу объединить все повторяющиеся строки в одну строку со всеми значениями описания.
Спасибо за вашу помощь...
2 ответа
Решение
Вы можете попробовать это:
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
В вашем запросе вы должны сгруппировать по слову и объединить по описанию
Протестировал это на MySQL, не уверен, что он будет работать на сервере SQL
SELECT id, GROUP_CONCAT(description SEPARATOR ', ')
FROM tablename GROUP BY word
и для сервера mssql попробуйте ответ, предоставленный @mdahlman