Как найти сумму нескольких столбцов в таблице в 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
.
Ответы
Ответ 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