как минус отрицательные значения в сумме?

#sql #sql-server #sql-server-2005

#sql #sql-сервер #sql-server-2005

Вопрос:

Я использую SUM() функцию. Но SUM() суммирует отрицательное значение в столбце. В столбце, если значение положительное, его следует добавить, а для отрицательных значений следует вычесть, а не добавлять как SUM()

 20.00
20.00
20.00
20.00
-20.00
20.00
20.00
40.00
20.00
20.00
20.00
20.00
20.00
-20.00
-20.00
20.00
 

sum() должен возвращать 220, а не 440.
Возвращает 440.

Комментарии:

1. если у вас есть 1,2, -2 в качестве строк в столбце, и вы вызвали sum для этого, результат будет равен 1. Разве это не то поведение, которое вы получаете?

2. если вы добавляете отрицательное значение к положительному значению — на самом деле это вычитание 3 (-5) = 3 -5 = -2

3. Пожалуйста, добавьте несколько примеров (отредактируйте свой вопрос): какие данные у вас есть, что из этого делает SUM(), что вы хотите получить?

4. @hrishi — Это возвращает 220 онлайн-демонстрация Вы используете его в объединении, которое удваивает количество суммируемых строк? Было бы 340, если бы -пять чисел суммировались как положительные.

5. Мартин спасибо… проблема в том fixed…it возвращал двойное значение … извините за боль, ребята

Ответ №1:

Чтобы вычесть отрицательные числа, а не добавлять их, вы бы использовали SUM(ABS(col)) , но просто чтобы проверить, что это то, что вам действительно нужно, пример результатов ниже.

 WITH YourTable(col) AS
(
SELECT 2 UNION ALL
SELECT -5 
)
SELECT 
       SUM(ABS(col)) AS [SUM(ABS(col))],
       SUM(col) AS [SUM(col)]
FROM YourTable
 

ВОЗВРАТ

 SUM(ABS(col)) SUM(col)
------------- -----------
7             -3
 

Ответ №2:

SELECT SUM(ABS(Column_Name)) FROM Table_Name;