Как я могу объединить дубликаты строк в 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

/questions/43416502/kak-poluchit-neskolko-zapisej-protiv-odnoj-zapisi-na-osnove-otnosheniya/43416510#43416510

Другие вопросы по тегам