1

個々の顧客のインシデント ログ データベースに対していくつかのクエリを実行しています。私が返したいのは、2012 年のすべての月の名前と、未解決のインシデントの数です。これは、12 か月以上ご利用いただいているお客様には問題ありませんが、ご利用期間が短いお客様には適していません。

私が持っているクエリはこれです:

    SELECT DATE_FORMAT(FROM_UNIXTIME(createdtime/1000), '%Y') as 'Year',
    DATE_FORMAT(FROM_UNIXTIME(createdtime/1000), '%M') as 'Month',
    count(wo.workorderid) as 'Total Logged'
    FROM workorder_threaded wot
    inner join workorder wo
    on wo.workorderid = wot.workorderid
    and wo.siteid = 4806
    and DATE_FORMAT(FROM_UNIXTIME(createdtime/1000), '%Y') <> '2011'
    where wot.workorderid = wot.thd_woid
    GROUP BY DATE_FORMAT(FROM_UNIXTIME(createdtime/1000), '%Y%m')

私が得る出力はこれです:

    Year    Month       Total Logged
    2012    August      3
    2012    September   356
    2012    October     212
    2012    November    120

ただし、次のものが必要です。

    Year      Month       Total Logged
    2012      January     0 
    2012      February    0
    2012      March       0
    2012      April       0
    2012      May         0
    2012      June        0
    2012      July        0 
    2012      August      3
    2012      September   356
    2012      October     212
    2012      November    120
    2012      December    0

年によって制限する必要はありません。つまり、コール ログ DB には 2011 年からのデータが含まれているため、クエリを変更して年の範囲をフィルター処理できます。

データが存在しないため、これが入力されていないことはわかっています。数値\日付テーブルを作成し、これを参照して日付を入力する方法を見てきましたが、これを行うのに苦労しています。また、結合や場所の条件を変更して無駄にしました。

前もって感謝します。

4

1 に答える 1

1

LEFT JOINここで使用する必要があります

于 2012-11-20T11:50:09.670 に答える