SELECT 
    sum(TotalHoursM)
          + (TotalHoursT)
          + (TotalHoursW)
          + (TotalHoursTH)
          + (TotalHoursF) 
          AS TOTAL
FROM LeaveRequest
SQL: сумма 3 столбца, когда один столбец имеет нулевое значение?
Ответ 1
Если столбец имеет значение 0, вы в порядке, я предполагаю, что у вас есть проблема с значением Null, в этом случае вам нужно будет использовать IsNull(Column, 0), чтобы гарантировать, что он всегда равен 0.
Ответ 2
 Предыдущие ответы с использованием функции ISNULL верны только для MS Sql Server. Функция COALESCE также будет работать в SQL Server. Но также будет работать в стандартных системах баз данных SQL. В приведенном примере:
SELECT sum(COALESCE(TotalHoursM,0))
          + COALESCE(TotalHoursT,0)
          + COALESCE(TotalHoursW,0)
          + COALESCE(TotalHoursTH,0)
          + COALESCE(TotalHoursF,0) AS TOTAL FROM LeaveRequest
 Это идентично решению ISNULL единственное отличие состоит в названии функции. Оба работают в SQL Server, но COALESCE - это стандарт ANSI, а ISNULL - нет. Кроме того, COALESCE более гибок. ISNULL будет работать только с двумя параметрами. Если первый параметр равен NULL, то возвращается значение второго параметра, в противном случае возвращается значение первого. COALESCE примет от 2 до 'n' (я не знаю предела 'n') параметров и вернет значение первого параметра, который не равен NULL. Когда есть только два параметра, эффект такой же, как и у ISNULL.
Ответ 3
SELECT sum(isnull(TotalHoursM,0)) 
         + isnull(TotalHoursT,0) 
         + isnull(TotalHoursW,0) 
         + isnull(TotalHoursTH,0) 
         + isnull(TotalHoursF,0) 
AS TOTAL FROM LeaveRequest
		Ответ 4
Для справки эквивалентный оператор для MySQL: IFNull (столбец, 0).
Этот оператор оценивает как значение столбца, если не null, в противном случае он вычисляется как 0.
Ответ 5
Вы можете использовать ISNULL:
ISNULL(field, VALUEINCASEOFNULL)
		Ответ 6
похоже, что вы хотите использовать СУММ все столбцы (я не уверен, откуда приходит сумма 3 столбца), а не только TotalHoursM, поэтому попробуйте следующее:
SELECT 
    SUM(    ISNULL(TotalHoursM  ,0)
          + ISNULL(TotalHoursT  ,0)
          + ISNULL(TotalHoursW  ,0)
          + ISNULL(TotalHoursTH ,0)
          + ISNULL(TotalHoursF  ,0) 
       ) AS TOTAL
    FROM LeaveRequest
		Ответ 7
Вы также можете использовать nvl(Column,0)
Ответ 8
Я бы попробовал это:
select sum (case when TotalHousM is null then 0 else TotalHousM end)
       + (case when TotalHousT is null then 0 else TotalHousT end)
       + (case when TotalHousW is null then 0 else TotalHousW end)
       + (case when TotalHousTH is null then 0 else TotalHousTH end)
       + (case when TotalHousF is null then 0 else TotalHousF end)
       as Total
From LeaveRequest
		Ответ 9
Если вы хотите избежать нулевого значения, используйте IsNull (Column, 1)