2012-06-14 10 views

Respuesta

66

Fácil:

SELECT 
    Val1, 
    Val2, 
    Val3, 
    (Val1 + Val2 + Val3) as 'Total' 
FROM Emp 

o si sólo quiere una fila:

SELECT 
    SUM(Val1) as 'Val1', 
    SUM(Val2) as 'Val2', 
    SUM(Val3) as 'Val3', 
    (SUM(Val1) + SUM(Val2) + SUM(Val3)) as 'Total' 
FROM Emp 
+7

Tenga en cuenta que la suma de la primera consulta será NULL si está activada la Val NULO. – Abris

+0

En la segunda consulta también, si 'Valx' es nulo para todas las filas, esta consulta se romperá. –

+0

una solución simple para el problema nulo es agregar una función isnull - SUMA (isnull (val1,0)) como 'Val1' – Mordechai

17

¿Solo como un SELECT normal?

SELECT 
    Val1, Val2, Val3, 
    Total = Val1 + Val2 + Val3 
FROM dbo.Emp 

o quieres para determinar que total y actualizar la tabla con esos valores?

UPDATE dbo.Emp 
SET Total = Val1 + Val2 + Val3 

Si usted quiere tener este total sea actualizada en todo momento - usted debe tener una columna calculada en la tabla:

ALTER TABLE dbo.Emp 
ADD CurrentTotal AS Val1 + Val2 + Val3 PERSISTED 

A continuación, se siempre obtener el total actual - incluso si los valores cambian:

SELECT 
    Val1, Val2, Val3, CurrentTotal 
FROM dbo.Emp 
+0

Incluso este también funciona bien, pero no puedo marcar su respuesta como la única que podemos marcar como respuesta ... Gracias por su respuesta ... –

28

Usted debe también ser consciente de null registros:

SELECT (ISNULL(Val1,0) + ISNULL(Val2,0) + ISNULL(Val3,0)) as 'Total' 
FROM Emp 

Uso de ISNULL:

ISNULL(col_Name, replace value) 
-2
SELECT Emp_cd, Val1, Val2, Val3, SUM(Val1 + Val2 + Val3) AS TOTAL 
FROM Emp 
GROUP BY Emp_cd, Val1, Val2, Val3 
+2

¿Por qué necesita agregar 'Group By' y' SUM' ?, solo cambia una de las respuestas haciéndolo más lento! ;). –

-1

Otro ejemplo usando COALESCE. http://sqlmag.com/t-sql/coalesce-vs-isnull

SELECT (COALESCE(SUM(val1),0) + COALESCE(SUM(val2), 0) 
+ COALESCE(SUM(val3), 0) + COALESCE(SUM(val4), 0)) AS 'TOTAL' 
FROM Emp 
+0

La pregunta solicita una entrada por fila, no solo un gran total. –

+0

La pregunta es: ¿Cómo encontrar la suma de varias columnas? –

+0

Sí, pero significa suma como en el término matemático para agregar cosas. No como en obtener una fila global. –

-1

utilizar un trigges va a trabajar: -

-> Crear trigger_name gatillo antes INSERT ON nombre_tabla

para cada conjunto FILA NEW.column_name3 = NEW.column_name1 + NUEVO.column_name2;

esto sólo funcionará sólo cuando se le insertar una fila en la tabla no cuando se va a actualizar su tabla de pupose tales crear otro factor desencadenante de diferente nombre y usar ACTUALIZACIÓN en el lugar de INSERT en la sintaxis anterior

0

Hola usted puede utilizar una consulta simple,

select emp_cd, val1, val2, val3, 
(val1+val2+val3) as total 
from emp; 

en caso de tener que insertar una nueva fila,

insert into emp select emp_cd, val1, val2, val3, 
(val1+val2+val3) as total 
from emp; 

Con el fin de actualizar,

update emp set total = val1+val2+val3; 

Esto actualizará para todos los comumns

1

Prueba esto:

select sum(num_tax_amount+num_total_amount) from table_name; 
Cuestiones relacionadas