Как СУММИРОВАТЬ два поля в запросе 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

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

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

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.