Как суммировать два поля в SQL-запросе
Мне нужно получить общее количество двух полей, которые находятся в одной строке, и ввести это число в поле в конце той же строки.
Это мой код.
Sum(tbl1.fld1 + tbl1.fld2) AS [Total]
Это то, для чего используется функция SUM, или вы можете использовать только функцию SUM для получения общей суммы столбца?
спасибо
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
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
Если вы хотите сложить два столбца, все, что вам нужно сделать, это добавить их. Тогда вы получите сумму этих двух столбцов для каждой строки, возвращаемой запросом.
то, что делает ваш код, это добавление двух столбцов вместе, а затем получение суммы сумм. Это сработает, но это может быть не то, чего вы пытаетесь достичь.