Преобразовать строки в столбцы в MySQL можно с помощью оператора CASE.
Таблица "Заказы" (orders):
| id | customer | product | quantity |
|---|---|---|---|
| 1 | Иван | Яблоки | 10 |
| 2 | Иван | Груши | 15 |
| 3 | Мария | Яблоки | 20 |
| 4 | Мария | Груши | 25 |
Нужно сделать выборку следующего вида:
| customer | apples | pears |
|---|---|---|
| Иван | 10 | 15 |
| Мария | 20 | 25 |
SQL-запрос для решения задачи:
SELECT `customer`, SUM( CASE WHEN `product` = 'Яблоки' THEN `quantity` ELSE 0 END ) AS 'apples', SUM( CASE WHEN `product` = 'Груши' THEN `quantity` ELSE 0 END) AS 'pears' FROM orders GROUP BY `customer` ;
Запрос использует оператор CASE для создания нового столбца для каждого товара, а затем использует функцию SUM для подсчёта количества каждого товара для каждого клиента.
Комментарии
0Нашли ошибку или хотите дополнить материал?