2017-01-19 4 views
0

私はこの問題を解決しようとしていますが、解決策を見つけることはできません。MySQLに特定の日付のSUMがない場合は0を追加しますか?

特定の日付の行のSUMを取得し、その日付のエントリがない場合は、0を返します。私はIFNULL()を使ってみましたが、動作させることはできません。

私のクエリは、過去15日間のデータを取得し、SUMSは各日付のコンテンツを取得します。私は

SELECT date(left(date_column, 10)) as dd, IFNULL (ROUND(SUM(sum_total)/1000) ,'0') 
FROM order_table WHERE date(left(date_column, 10)) >= DATE_ADD(CURDATE(), INTERVAL -14 DAY) 
GROUP BY date(left(date_column, 10)) ORDER BY dd ASC 

を試してみましたが、指定した日付にはデータがありませんので、日付がスキップされたときに私の問題が発生する。ここでは、クエリ

SELECT date(left(date_column, 10)) as dd, ROUND(SUM(sum_total)/1000) 
as cnt FROM order_table WHERE date(left(date_column, 10)) >= DATE_ADD(CURDATE(), INTERVAL -14 DAY) 
GROUP BY date(left(date_column, 10)) ORDER BY dd ASC 

があります

右方向への任意のヒントは、私がnullその道のためにIF通常の関数とテストを使用しようとするだろう

+0

私は、コードの代わりに、SQLでこれを行うだろう。あなたはSQLでそれをどうやって行うのか本当に確信していません。 – CptMisery

+0

'group by'結果セットには元のデータには含まれていない日付が含まれていないので、' ifnull'が動作することはありません。行方不明の行を追加する必要があります。試してみてください[MySQLの範囲内の欠落した日付を埋める方法](http://stackoverflow.com/questions/3538858/mysql-how-to-fill-missing-dates-in-range)(またはそれに類する解決策) – Solarflare

答えて

関連する問題