Транспонировать строки запроса mysql в столбцы

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

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

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

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

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


person Smudger    schedule 13.03.2012    source источник
comment
возможный дубликат Как повернуть схему значения объекта-атрибута MySQL   -  person Brad Christie    schedule 13.03.2012
comment
Пройдите через это [stackoverflow.com/questions/1851781/ может вам помочь.   -  person Java    schedule 13.03.2012


Ответы (1)


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

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 в этой таблице.

person nnichols    schedule 13.03.2012
comment
@RyanSmith (примечание), этот ответ должен сделать это за вас, однако вы можете рассмотреть возможность добавления ГОД в качестве дополнительной группы на случай, если вы охватите годовую активность. Вы бы не хотели, чтобы ложные цифры сводились к одному году по сравнению с другим. - person DRapp; 13.03.2012
comment
@DRapp спасибо за предостережение. Я изменю свой запрос, чтобы включить год. - person nnichols; 13.03.2012