ISNULL(SUM(MyTable.Total), 0) AS Total
Как я могу изменить вышеупомянутый оператор, чтобы также проверить, является ли Общее количество меньше чем 0 (нуль), такой, что, Если Общее количество является ПУСТЫМ или меньше чем 0 (отрицаний), я присваиваю 0 Общему количеству
CASE WHEN ISNULL(SUM(MyTable.Total), 0) <= 0 THEN 0
ELSE SUM(MyTable.Total)
END AS Total
CASE
WHEN COALESCE(SUM(MyTable.Total), 0) <= 0 THEN 0
ELSE SUM(MyTable.Total)
END AS [Total]
CASE WHEN
COALESCE(SUM(MyTable.Total),0) <= 0
THEN
0
ELSE
SUM(MyTable.Total)
END AS Total
Как насчет
SUM(ISNULL(MyTable.Total, 0)) AS Total
Я предпочитаю это, поскольку реализация NULL в базах данных не всегда логична и различается у разных поставщиков, а также от того, включены ли ANSI_NULLS или нет.
Например. SUM of NULL, NULL и 1 возвращается как 1, но (1 + NULL + NULL) равно NULL ...
Затем вы можете сделать меньше 0 с помощью CASE, как указано выше, таким образом
CASE
WHEN SUM(ISNULL(MyTable.Total,0)) <= 0 THEN 0
ELSE SUM(ISNULL(MyTable.Total,0))
END AS [Total]