Добавление двух сумм столбцов в SQL Server2005 - PullRequest
1 голос
/ 09 октября 2011

Я столкнулся с проблемой при попытке сложить две суммы столбцов. Я создал представление со всеми правильными данными, но когда я пытаюсь выполнить запрос вроде:

    Select ID, Sum(ColumnA),
    Sum(ColumnB)
    Sum(ColumnA) + Sum(ColumnB) AS ColumnC
    From View1
   Group by ID

Показатель ColumnC верен только в том случае, если в обоих столбцах есть данные, если в ColumnB есть только данные, тогда он отображает это, но если в ColumnA есть только данные, то это не так.

Иногда, когда в столбцах A или B нет никаких данных, это будет NULL, так что, возможно, это проблема. Надеюсь, что есть способ обойти это.

Приветствия

Ответы [ 3 ]

3 голосов
/ 09 октября 2011

Попробуйте использовать ISNULL для замены нулей на NULL:

Select ID, Sum(ColumnA),
Sum(ColumnB)
ISNULL(Sum(ColumnA),0) + ISNULL(Sum(ColumnB),0) AS ColumnC
From View1
Group by ID
2 голосов
/ 09 октября 2011

Добавление чего-либо к нулевому значению дает нулевой результат, нулевое значение не преобразуется в ноль.Вы должны сделать это преобразование явно:

Select ID, Sum(ColumnA),
Sum(ColumnB)
isnull(Sum(ColumnA), 0) + isnull(Sum(ColumnB), 0) AS ColumnC
From View1
Group by ID
1 голос
/ 09 октября 2011

Вы можете использовать COALESCE для замены NULL входных данных для расчета на ноль, как показано ниже.

COALESCE(Sum(ColumnA),0) + COALESCE(Sum(ColumnB),0) +  AS ColumnC

Или ISNULL, как в двух других ответах. Не имеет значения, какой , если переносимость не имеет значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...