2013-02-14 3 views
45

Мне нужно получить общее количество двух полей, которые находятся в пределах одной строки, и ввести это число в поле в конце этой же строки.Как SUM два поля в SQL-запросе

Это мой код.

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

Является ли это то, что функция SUM используется для, или вы можете использовать только функцию SUM для получения общей колонки?

Благодаря

ответ

103

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 
+2

+1 для сложного ответа – LuigiEdlCarno

+4

Этот ответ не является сложным, простым и подробным, если необходимо. Неплохо! – Bitterblue

+1

спасибо за этот подробный ответ –

5

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

select tblExportVertexCompliance.TotalDaysOnIncivek + tblExportVertexCompliance.IncivekDaysOtherSource AS [Total Days on Incivek] 
22

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

SELECT *, (FieldA + FieldB) AS Sum 
FROM Table 
+0

преобразование в int также может быть важным, если поля являются varchars, содержащими ints – LuigiEdlCarno

4

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

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

Надежда, что помогает.

1

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

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

3
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 
3

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

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 
Смежные вопросы