2016-06-02 2 views
-1

Я пытаюсь вычислить в SQL. Результат расчета показан на графике. График перестает работать там, если результат запроса SQL пуст:Показать '0', если результат пуст

Это запрос SQL Я использую:

SELECT SUM(total) as total 
FROM table 
WHERE user_id = 1 AND date BETWEEN '2016-06-01' AND '2016-06-31' 

Если есть данные в таблице нет никаких проблем. Когда нет данных, график перестает работать.

Так что я хочу показать '0', если общее количество пуст. Что мне нужно изменить в моем SQL-запросе, чтобы показать «0», если он пуст?

+0

Использование isnull (SUM (всего), 0) – profesor79

+0

Тег используемого dbms, у вас уже есть хотя бы один конкретный ответ продукта. – jarlh

ответ

3

Использование COALESCE возвращает 0 вместо если NULL таблица не заполнена:

SELECT COALESCE(SUM(total),0) as total 
FROM table 
WHERE user_id = 1 AND date BETWEEN '2016-06-01' AND '2016-06-31' 
1

Вы пробовали:

SELECT ISNULL(SUM(total), 0) as total 
FROM table 
WHERE user_id = 1 AND date BETWEEN '2016-06-01' AND '2016-06-31' 
0

Этот запрос всегда будет возвращать ровно одну строку, недобросовестный к нулю, если нет ни одной строки, соответствующие:

SELECT COALESCE((
    SELECT 
    SUM(total) 
    FROM table 
    WHERE user_id = 1 AND date BETWEEN '2016-06-01' AND '2016-06-31' 
),0) AS total 
0

Вы можете попробовать:

if not exists (SELECT total FROM table WHERE user_id = 1 AND date BETWEEN '2016-06-01' AND '2016-06-31') 
begin 
    select 0 as total 
end 
else 
begin 
    SELECT SUM(total) as total 
    FROM table 
    WHERE user_id = 1 AND date BETWEEN '2016-06-01' AND '2016-06-31' 
end