Я хочу показать 0 или что-то, что я хочу, когда нет данных. И это мой запрос.Как показать 0, когда нет данных
SELECT `icDate`,IFNULL(SUM(`icCost`),0) AS icCost
FROM `incomp`
WHERE (`icDate` BETWEEN "2016-01-01" AND "2016-01-05")
AND `compID` = "DDY"
GROUP BY `icDate`
И это результат этого запроса.
icDate | icCost
--------------------------
2016-01-01 | 1000.00
2016-01-02 | 2000.00
2016-01-03 | 3000.00
2016-01-04 | 4000.00
2016-01-05 | 5000.00
Если каждый день я хочу показать данные, которые он имеет данные, это было не problem.but это есть день, это не данные. Это не покажет этот день, Как это.
icDate | icCost
--------------------------
2016-01-01 | 1000.00
2016-01-02 | 2000.00
2016-01-04 | 4000.00
2016-01-05 | 5000.00
Но я хочу, чтобы он мог показывать данные следующим образом.
icDate | icCost
--------------------------
2016-01-01 | 1000.00
2016-01-02 | 2000.00
2016-01-03 | 0.00
2016-01-04 | 4000.00
2016-01-05 | 5000.00
Как написать запрос, чтобы получить этот ответ. Спасибо.
Создайте таблицу календаря, выполните внешнее соединение. – jarlh
Никаких обещаний, но похоже, что CTE может быть полезной здесь – allie
Не совсем дубликат, но следующие могут быть полезны: http://stackoverflow.com/questions/9295616/how-to-get-list-of -dates-between-two-dates-in-mysql-select-query/9296238 # 9296238 –