Как СУММИРОВАТЬ два поля в запросе SQL

88

Мне нужно получить сумму двух полей, которые находятся в одной строке, и ввести это число в поле в конце той же строки.

Это мой код.

Sum(tbl1.fld1 + tbl1.fld2) AS [Total]

Это то, для чего используется функция СУММ, или вы можете использовать функцию СУММ только для получения суммы столбца?

благодаря

Антон Хьюз
источник

Ответы:

212

SUM- агрегатная функция. Он рассчитает общую сумму для каждой группы. +используется для вычисления двух или более столбцов подряд.

Рассмотрим этот пример,

ID  VALUE1  VALUE2
===================
1   1       2
1   2       2
2   3       4
2   4       5

 

SELECT  ID, SUM(VALUE1), SUM(VALUE2)
FROM    tableName
GROUP   BY ID

приведет к

ID, SUM(VALUE1), SUM(VALUE2)
1   3           4
2   7           9

 

SELECT  ID, VALUE1 + VALUE2
FROM    TableName

приведет к

ID, VALUE1 + VALUE2
1   3
1   4
2   7
2   9

 

SELECT  ID, SUM(VALUE1 + VALUE2)
FROM    tableName
GROUP   BY ID

приведет к

ID, SUM(VALUE1 + VALUE2)
1   7
2   16
Джон Ву
источник
11
Этот ответ не сложный, но простой и настолько подробный, насколько это необходимо. Хороший!
Bitterblue
1
Престижность Джон, возможно, лучший способ ответить на этот вопрос!
Abhijit
30

Попробуйте следующее:

SELECT *, (FieldA + FieldB) AS Sum
FROM Table
Обл Тобл
источник
преобразование в int тоже может быть важным, если поля являются varchars, содержащими целые числа,
ЛуиджиЭдлКарно
@Obl Tobl Я хочу, чтобы сумма столбцов была динамической
Prashant Pimpale
вы, сэр, спасли мне жизнь.
WhySoSerious
7

СУММ используется для суммирования значения в столбце для нескольких строк. Вы можете просто сложить столбцы вместе:

select tblExportVertexCompliance.TotalDaysOnIncivek + tblExportVertexCompliance.IncivekDaysOtherSource AS [Total Days on Incivek]
Дэниел Келли
источник
7
ID  VALUE1  VALUE2
===================
1   1       2

1   2       2
2   3       4
2   4       5

select ID, (coalesce(VALUE1 ,0) + coalesce(VALUE2 ,0) as Total from TableName
E Coder
источник
5

Из-за того, что у меня меньше 50 очков репутации, я не мог прокомментировать или проголосовать за ответ E Coder выше. Это лучший способ сделать это, чтобы вам не приходилось использовать группу by, поскольку у меня была аналогичная проблема.
Выполнив SUM((coalesce(VALUE1 ,0)) + (coalesce(VALUE2 ,0)))как Total, вы получите желаемое число, но также избавитесь от ошибок, связанных с невыполнением Group By. Это был мой запрос, он дал мне общее количество и общую сумму для каждого дилера, а затем дал мне промежуточный итог по качественным и рискованным ссудам дилеров.

SELECT 
    DISTINCT STEP1.DEALER_NBR
    ,COUNT(*) AS DLR_TOT_CNT
    ,SUM((COALESCE(DLR_QLTY,0))+(COALESCE(DLR_RISKY,0))) AS DLR_TOT_AMT
    ,COUNT(STEP1.DLR_QLTY) AS DLR_QLTY_CNT
    ,SUM(STEP1.DLR_QLTY) AS DLR_QLTY_AMT
    ,COUNT(STEP1.DLR_RISKY) AS DLR_RISKY_CNT
    ,SUM(STEP1.DLR_RISKY) AS DLR_RISKY_AMT
    FROM STEP1
    WHERE DLR_QLTY IS NOT NULL OR DLR_RISKY IS NOT NULL
        GROUP BY STEP1.DEALER_NBR
CelticCoder
источник
4

Функция суммы получает только сумму столбца. Чтобы суммировать два значения из разных столбцов, преобразуйте значения в int и сложите их с помощью + -Operator

Select (convert(int, col1)+convert(int, col2)) as summed from tbl1

Надеюсь, это поможет.

ЛуиджиЭдлКарно
источник
4

Напоминание о добавлении столбцов. Если одно из значений равно NULL, сумма этих столбцов становится NULL. Таким образом, почему некоторые плакаты рекомендуют объединяться со вторым параметром, равным 0

Я знаю, что это более старая запись, но я хотел добавить ее для полноты.

Барб Дауди
источник
Спасибо, Барб, рядом с coalesce можно также использовать ISNULL. Например, ISNULL ((значение_1), 0) + ISNULL ((значение_2), 0)
Horbaje
3

Если вы хотите сложить два столбца вместе, все, что вам нужно сделать, это добавить их. Затем вы получите сумму этих двух столбцов для каждой строки, возвращаемой запросом.

Ваш код добавляет два столбца вместе, а затем получает сумму сумм. Это сработает, но может оказаться, что это не то, чего вы пытаетесь достичь.

Дэн Бракук
источник