2011-08-08 4 views
0

私は日付範囲(たとえば、BETWEEN '2011-01-01'と '2011-02-01')の間で選択し、列挙された値。何ヶ月もの間、毎月これを列として使う方法がありますか?私は現在、毎月これを手作業でやっています。日付、MySQLの列を持つ列挙型のグループ

例:

vehicle_type | January | February | March 
---------------------------------------------- 
sedan   |  12  | 10  | 4 
coupe   |  5  | 7  | 23 
truck   |  0  | 0  | 9 
electric  |  22  | 10  | 13 
hybrid  |  0  | 12  | 0 

答えて

0

あなたはカレンダーのテーブルを作成することができます...

CREATE TABLE calendar 
(
    description VARCHAR2(100 BYTE), 
    when_start DATE, 
    when_end  DATE 
) 

は、例えば、ピボットクエリ を使用

SELECT 
    vehicle_type, 
    SUM(jan),SUM(feb), 
    --add the other months here 
    SUM(nov),SUM(dece) 
FROM 
(
SELECT v.vehicle_type, 
CASE WHEN c.description='Jan' THEN 
    count(*) 
END AS jan, 
case when c.description='Feb' THEN 
    count(*) 
END AS feb, 
-- Add the rest of the months here too 
CASE WHEN c.description='Nov' THEN 
    COUNT(*) 
END AS nov, 
CASE WHEN c.description='Dec' THEN 
    COUNT(*) 
END AS dece 
FROM calendar c 
INNER JOIN vehicles v ON v.when >= c.when_start AND v.when <= c.when_end 
GROUP BY v.vehicle_type 
) 
GROUP BY vehicle_type 
ORDER BY vehicle_type 
関連する問題