Подтвердить что ты не робот

Как найти сумму нескольких столбцов в таблице в SQL Server 2005?

У меня есть таблица Emp, которая имеет следующие строки:

Emp_cd | Val1  | Val2  | Val3  | Total
-------+-------+-------+-------+-------
 1     | 1.23  | 2.23  | 3.43  | 
 2     | 23.03 | 12.23 | 2.92  |
 3     | 7.23  | 9.05  | 13.43 |
 4     | 03.21 | 78.23 | 9.43  |

Я хочу найти SUM of Val1, Val2, Val3 и который будет отображаться в столбце Total.

4b9b3361

Ответ 1

Легко:

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

или если вы просто хотите одну строку:

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

Ответ 2

Вы также должны знать null записи:

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

Использование ISNULL:

ISNULL(col_Name, replace value)

Ответ 3

Как обычный SELECT?

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

Или вы хотите определить это значение и обновить таблицу с этими значениями?

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

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

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

Тогда вы всегда получите текущую сумму - даже если значения меняются:

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

Ответ 4

Привет Вы можете использовать простой запрос,

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

Если вам нужно вставить новую строку,

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

Чтобы обновить,

update emp set total = val1+val2+val3;

Это обновление для всех консолей

Ответ 5

Другой пример использования 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

Ответ 6

используйте триггеры, которые он будет работать: -

→ CREATE TRIGGER имя-триггер ПЕРЕД ВСТАВКОЙ НА table_name

ДЛЯ КАЖДОГО набора ROW NEW.column_name3 = NEW.column_name1 + NEW.column_name2;

это будет работать только тогда, когда вы будете вставлять строку в таблицу не тогда, когда вы будете обновлять таблицу для такого типа создайте еще один триггер с другим именем и используйте UPDATE на месте INSERT в приведенном выше синтаксисе

Ответ 7

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

select sum(num_tax_amount+num_total_amount) from table_name;

Ответ 8

SELECT Emp_cd, Val1, Val2, Val3, SUM(Val1 + Val2 + Val3) AS TOTAL 
FROM Emp
GROUP BY Emp_cd, Val1, Val2, Val3