mysql - GROUP_CONCAT строки в строку - PullRequest
1 голос
/ 19 июня 2019

У меня есть следующий набор результатов:

req_id |  p_id  | ai_result  |  hash | sku
1      |  4     | Match      |  XAN  | HOW
1      |  4     | Match      |  HXN  | HOW
1      |  4     | Non Match  |  123  | HOW

Мне нужен следующий вывод

sku  | matched  |  non_matched
HOW  | XAN, HXN |  123

Вот, насколько я мог получить:

SELECT sku, GROUP_CONCAT(hash) AS hash
FROM `sku_match` 
GROUP BY req_id, p_id

Как различить строки на основе столбца ai_result и разместить их отдельно. Что-то вроде GROUP_CONCAT(hash) AS matched, GROUP_CONCAT(hash) AS non_matched?

1 Ответ

5 голосов
/ 19 июня 2019

Попробуйте использовать условное агрегирование:

SELECT
    sku,
    GROUP_CONCAT(CASE WHEN ai_result = 'Match' THEN hash END) AS matched,
    GROUP_CONCAT(CASE WHEN ai_result = 'Non Match' THEN hash END) AS non_matched
FROM sku_match
GROUP BY
    sku;

enter image description here

Демо

...