2012-03-13 7 views
5

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

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

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

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

Заранее благодарим за помощь.

+1

Возможный дубликат [Как повернуть схему сущностей-атрибутов MySQL] (http://stackoverflow.com/questions/649802/how-to-pivot-a-mysql-entity-attribute-value-schema) –

+1

Пройдите через этот [http://stackoverflow.com/questions/1851781/transpose-a-row-into-columns-with-mysql-without-using-unions], который может вам помочь. – Java

ответ

7

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

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

+1

@ RyanSmith (примечание). Этот ответ должен сделать это за вас, однако вы можете захотеть добавить YEAR как дополнительную группу, если вы занимаетесь в течение года. Вы не хотели бы, чтобы ложные числа вливались в один год против другого. – DRapp

+1

@DRapp благодарит за внимание. Я изменю свой запрос, чтобы включить год. – nnichols

+0

Спасибо, миллион, работает на 100%. – Smudger

Смежные вопросы