5

以下の結果を生成する簡単なクエリがあります。

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

行を列に転置したいと思います。

mysqlにはピボット関数がないため、ユニオンが必要ですが、100%確実ではないことを理解しています。

助けてくれてありがとう。

4

1 に答える 1

8

このようなクロス集計でそれを行うことができます -

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 を含める必要があります。

于 2012-03-13T14:42:33.267 に答える