2017-08-05 9 views
1

私はタイムスタンプとイベントを文字列として保持するテーブル 'Messages'を持っています。私は過去30日間に何種類のイベントが発生したかを表示したい。日付ごとに複数の列を選択

ので、出力が好きなはずです。

date   event_1  event_2 
... 
2017-08-01   4    0 
2017-08-02   0    0 
2017-08-03   5    3 
2017-08-04   0    2 
... 

重要なのは、毎日が(全くイベントが発生しない場合でも)が表示されるということです。これは動作しません

SELECT distinct(DATE(MESSAGE.DATEFIELD)) as 'date', 
IF(MESSAGE.EVENT = 'event_1', COUNT(MESSAGE.ID), 0) AS 'event 1', 
IF(MESSAGE.EVENT = 'event_2', COUNT(MESSAGE.ID), 0) AS 'event 2' 
FROM MESSAGE 
WHERE DATE(MESSAGE.DATEFIELD) >= DATE(NOW()) - INTERVAL 30 DAY 
GROUP BY date, MESSAGE.EVENT 

私のコードは次のようになります。イベントごとに複数の日数が追加されます。私の間違いを私に指摘できますか?ありがとう!

答えて

1
select DATEFIELD, 
count(case when EVENT = 'event_1' then 1 end) AS 'event 1', 
count(case when EVENT = 'event_2' then 1 end) AS 'event 2' 
from message 
WHERE DATE(MESSAGE.DATEFIELD) >= DATE(NOW()) - INTERVAL 30 DAY 
group by DATEFIELD 
+0

完璧!ありがとう – user1482309

関連する問題