У меня есть две таблицы. Одна таблица на самом деле заполняется ежедневными событиями, а другая - просто сводка другой таблицы. У меня есть хранимая процедура, которая удаляет значения, хранящиеся в ежедневной таблице. Теперь после каждого удаления итоговая таблица также должна обновляться таким образом, что теперь сумма будет обновляться за вычетом значения удаленной.
Моя проблема в том, что, когда ежедневная таблица была очищена, то после ее автоматического суммирования получается значение NULL (поскольку в ней не найдено записей). Затем происходит сбой приложения, поскольку моя сводная таблица не должна содержать значения NULL.
Если это возможно, как я могу создать процедуру, которая будет иметь значение 0, если SUM приведет к NULL?
ОБРАЗЕЦ ЗАПРОСА:
DELETE FROM Daily WHERE DailyID = @DailyID
SELECT @TotalA = SUM(o.OutA), @TotalB = SUM(o.OutB), @TotalC = SUM(o.OutB)
FROM Daily
WHERE Day = @Day
UPDATE Summary
SET MyA = @TotalA, MyB = @TotalB, MyC = @TotalC
WHERE SummaryID = @SummaryID
Исходя из моего запроса, приведенного выше, допустим, у меня есть 10 записей в моей ежедневной таблице. 2 записи в среду, 3 в пятницу и 5 в субботу. Таким образом, в моей сводной таблице будет три записи - сводка по каждой среде, субботе и пятнице.
Когда я прошу мою процедуру удалить все записи в среду, тогда останется 8 записей (без среды). И поэтому я должен обновить мою сводную запись, говоря, что все записи среды были удалены. Однако я не хочу, чтобы моя Сводная таблица забыла, что у него была среда. Поэтому вместо этого я хочу, чтобы он сохранил запись среды со значениями суммарных значений, равными нулю (0).