Cómo SUMA dos campos dentro de una consulta SQL

84

Necesito obtener el total de dos campos que están dentro de la misma fila e ingresar ese número en un campo al final de esa misma fila.

Este es mi codigo.

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

¿Para esto se usa la función SUM, o solo puede usar la función SUM para obtener el total de una columna?

Gracias

Anton Hughes
fuente

Respuestas:

204

SUMes una función agregada. Calculará el total de cada grupo. +se utiliza para calcular dos o más columnas en una fila.

Considere este ejemplo,

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

resultará

ID, SUM(VALUE1), SUM(VALUE2)
1   3           4
2   7           9

 

SELECT  ID, VALUE1 + VALUE2
FROM    TableName

resultará

ID, VALUE1 + VALUE2
1   3
1   4
2   7
2   9

 

SELECT  ID, SUM(VALUE1 + VALUE2)
FROM    tableName
GROUP   BY ID

resultará

ID, SUM(VALUE1 + VALUE2)
1   7
2   16
John Woo
fuente
10
Esta respuesta no es compleja sino simple y tan detallada como sea necesario. ¡Buena!
Bitterblue
1
¡Felicitaciones John, posiblemente la mejor manera de responder a esta pregunta!
Abhijit
29

Intente lo siguiente:

SELECT *, (FieldA + FieldB) AS Sum
FROM Table
Obl Tobl
fuente
la conversión a int también podría ser importante, si los campos son varchars que contienen
ints
@Obl Tobl Quiero que la suma de columnas sea dinámica
Prashant Pimpale
7

SUM se utiliza para sumar el valor en una columna para varias filas. Puede simplemente agregar sus columnas juntas:

select tblExportVertexCompliance.TotalDaysOnIncivek + tblExportVertexCompliance.IncivekDaysOtherSource AS [Total Days on Incivek]
Daniel Kelley
fuente
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
Codificador E
fuente
5

Debido a que mis puntos de reputación son menos de 50, no pude comentar ni votar por la respuesta de E Coder anterior. Esta es la mejor manera de hacerlo para que no tenga que usar el grupo, ya que tuve un problema similar.
Al hacer SUM((coalesce(VALUE1 ,0)) + (coalesce(VALUE2 ,0)))como Total, obtendrá el número que desea, pero también lo eliminará de cualquier error por no realizar un Agrupar por. Esta fue mi consulta y me dio un recuento total y la cantidad total para cada concesionario y luego me dio un subtotal para préstamos de concesionario de calidad y riesgosos.

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
CelticCoder
fuente
4

La función de suma solo obtiene el total de una columna. Para sumar dos valores de diferentes columnas, convierta los valores a int y súmelos usando el + -Operador

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

Espero que ayude.

LuigiEdlCarno
fuente
3

Si desea agregar dos columnas juntas, todo lo que tiene que hacer es agregarlas. Luego obtendrá la suma de esas dos columnas para cada fila devuelta por la consulta.

Lo que hace su código es sumar las dos columnas y luego obtener una suma de las sumas. Eso funcionará, pero es posible que no sea lo que está intentando lograr.

Dan Bracuk
fuente
3

Solo un recordatorio sobre cómo agregar columnas. Si uno de los valores es NULL, el total de esas columnas se convierte en NULL. Por lo tanto, ¿por qué algunos carteles han recomendado fusionarse con el segundo parámetro que es 0?

Sé que esta era una publicación anterior, pero quería agregar esto para completar.

Barb Dawdy
fuente