Транспонировать строки запроса MySQL в столбцы - PullRequest
5 голосов
/ 13 марта 2012

У меня есть простой запрос, который дает следующие результаты:

SELECT month,transporttype,count(transporttype) as loads 
from deliveries 
group by month,transporttype

Я хотел бы переместить строки в столбцы.

Я понимаю, что MySQL не имеет сводных функций, поэтому требуется объединение, но не уверен на 100%.

Заранее спасибо за помощь.

1 Ответ

8 голосов
/ 13 марта 2012

Вы можете сделать это с помощью кросс-таблицы следующим образом -

SELECT
    `year`,
    `month`,
    SUM(IF(`transporttype` = 'inbound',                 1, 0)) AS `inbound`,
    SUM(IF(`transporttype` = 'LocalPMB',                1, 0)) AS `LocalPMB`,
    SUM(IF(`transporttype` = 'Long Distance',           1, 0)) AS `Long Distance`,
    SUM(IF(`transporttype` = 'shuttle',                 1, 0)) AS `shuttle`,
    SUM(IF(`transporttype` = 'export',                  1, 0)) AS `export`,
    SUM(IF(`transporttype` = 'Extrusions-LongDistance', 1, 0)) AS `Extrusions-LongDistance`,
    SUM(IF(`transporttype` = 'Extrusions-Shuttle',      1, 0)) AS `Extrusions-Shuttle`
FROM `deliveries`
GROUP BY `year`, `month`

В другой заметке вы должны переместить значения transporttype в справочную таблицу и иметь в этой таблице transporttype_id.

...