Как насчет
SUM(ISNULL(MyTable.Total, 0)) AS Total
Я предпочитаю это, поскольку реализация NULL в базах данных не всегда логична и различается у разных поставщиков и в зависимости от того, включены ANSI_NULLS или нет.
например. СУММА 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]