Как суммировать два поля в SQL-запросе


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

Это мой код.

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

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

спасибо

7 53

7 ответов:

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

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

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

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

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

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

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

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

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

из-за того, что мои очки репутации меньше 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

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

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