78

我有一个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中显示。Val1, Val2, Val3Total

4

9 回答 9

139

简单的:

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
于 2012-06-14T12:49:43.603 回答
49

您还必须注意以下null记录:

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

用法ISNULL

ISNULL(col_Name, replace value)
于 2014-11-05T11:24:57.777 回答
29

和普通人一样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
于 2012-06-14T12:48:40.457 回答
5

试试这个:

select sum(num_tax_amount+num_total_amount) from table_name;
于 2017-07-29T12:01:31.713 回答
0

另一个使用 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
于 2016-02-02T18:25:12.567 回答
0

您好,您可以使用一个简单的查询,

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;

这将为所有社区更新

于 2016-09-10T12:39:23.833 回答
0

需要对具有空值的 Postgres 数据库表执行类似的工作。最终创建了一个功能,因为还有太多COALESCE要添加的功能。

CREATE OR REPLACE FUNCTION array_sum_float(float[])
    RETURNS float
AS
$$
DECLARE
    arrInts ALIAS FOR $1;
    sum int DEFAULT 0;
BEGIN
    FOR I IN ARRAY_LOWER(arrInts, 1)..ARRAY_UPPER(arrInts, 1)
        LOOP
            sum = sum + COALESCE(arrInts[I], 0);
        END LOOP;
    RETURN sum;
END;
$$
    LANGUAGE plpgsql;

SELECT array_sum_float(ARRAY [6,8, null, 2]);
SELECT array_sum_float(ARRAY [Val1, Val2, Val3]) from Emp;
于 2021-05-25T07:58:21.983 回答
-2
SELECT Emp_cd, Val1, Val2, Val3, SUM(Val1 + Val2 + Val3) AS TOTAL 
FROM Emp
GROUP BY Emp_cd, Val1, Val2, Val3
于 2015-05-05T10:30:37.807 回答
-3

使用触发器它将起作用:-

->在插入表名之前创建触发器触发器名

对于每一行集 NEW.column_name3 = NEW.column_name1 + NEW.column_name2;

这仅在您将在表中插入一行时才有效,而不是当您为此目的更新表时创建另一个不同名称的触发器并在上述语法中使用UPDATE代替INSERT

于 2016-09-10T12:32:26.550 回答