вторая попытка ответить на этот вопрос более подробно. Я пытаюсь сгруппировать различные значения нескольких столбцов вместе для объектов с тем же именем. Я могу использовать GROUP_CONCAT для каждого из столбцов «Тип», но я не могу объединить их вместе, чтобы получить отдельный набор значений для каждого имени.
Вот пример моих данных:
+———-+——-+——-+——-+ | Company | Type1 | Type2 | Type3 | +———-+——-+——-+——-+ | Generic | 1 | NULL | 3 | +———-+——-+——-+——-+ | Generic | NULL | 2 | 2 | +———-+——-+——-+——-+ | Generic | 3 | 2 | NULL | +———-+——-+——-+——-+ | Generic2 | 1 | NULL | NULL | +———-+——-+——-+——-+ | Generic2 | NULL | 2 | 2 | +———-+——-+——-+——-+ | Generic2 | 1 | 2 | NULL | +———-+——-+——-+——-+
И вот основной запрос, который я должен придумать, который НЕ работает так, как хотелось бы:
SELECT s.company, CONCAT(GROUP_CONCAT(DISTINCT s.type1),’,’,GROUP_CONCAT(DISTINCT s.type2),’,’,GROUP_CONCAT(DISTINCT s.type3)) AS GROUPED FROM sample s GROUP BY s.company
Приведенный выше запрос возвращает:
+———-+————+ | Company | GROUPED | +———-+————+ | Generic | 1,3,2,3,2 | +———-+————+ | Generic2 | 1,2,2 | +———-+————+
Мне нужно, чтобы он возвращал группу групп только с разными значениями:
+———-+———+ | Company | GROUPED | +———-+———+ | Generic | 1,2,3 | +———-+———+ | Generic2 | 1,2 | +———-+———+
Это возможно?
Источник: