Как суммировать два поля в 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
Если вы хотите сложить два столбца, все, что вам нужно сделать, это добавить их. Тогда вы получите сумму этих двух столбцов для каждой строки, возвращаемой запросом.
то, что делает ваш код, - это добавление двух столбцов вместе, а затем получение суммы сумм. Что будет работать, но это может быть не то, что вы пытаетесь достичь.