MySQL CASE — как обрабатывать несколько результатов для одного оператора CASE

Я надеюсь, что использую правильную терминологию в своем заголовке, но у меня есть это (упрощенное) выражение SQL:

SELECT name,  
MAX(CASE WHEN org_assigned_role= "CFO" THEN username END) "CFO",
MAX(CASE WHEN org_assigned_role= "CIO" THEN username END) "CIO"
FROM `wp_hubspot` , `wp_hubspot_companies` where company_id=comp_id 
GROUP BY name
ORDER BY name

Проблема в том, что у меня есть 2 CFO в моей таблице, и я хочу, чтобы оба их имени были в одном поле/столбце «CFO». Это возможно?

Спасибо

Рассмотрите возможность решения проблем с отображением данных в коде приложения.

Strawberry 22.12.2020 09:40
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
1
118
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Похоже, вы хотите:

select name,
    GROUP_CONCAT(DISTINCT CASE WHEN org_assigned_role = "CFO" THEN username END ORDER BY username SEPARATOR ", ") "CFO",
    MAX(CASE WHEN org_assigned_role= "CIO" THEN username END) "CIO"
    FROM `wp_hubspot` , `wp_hubspot_companies` where company_id=comp_id 
    GROUP BY name

Если вы имеете в виду, что вам нужны два в отдельных строках, вы можете иметь в виду несколько результатов, и вам нужно будет предоставить образцы данных и ожидаемый результат.

Обратите внимание, что результат GROUP_CONCAT усекается до @@group_concat_max_len символов (по умолчанию 1024 в mysql и более старых версиях mariadb).

Потрясающий! Да, точно. Большое спасибо. Не думаю, что я когда-либо догадался бы об этом сам.

bgunning 22.12.2020 15:49

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