如何在SQL Server 2005中查找表中多列的总和?

Tri*_*dhi 57 sql sql-server 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  |
Run Code Online (Sandbox Code Playgroud)

我想找到SUMVal1, Val2, Val3,并且将在显示Total列.

aF.*_*aF. 104

简单:

SELECT 
   Val1,
   Val2,
   Val3,
   (Val1 + Val2 + Val3) as 'Total'
FROM Emp
Run Code Online (Sandbox Code Playgroud)

或者如果你只想要一行:

SELECT 
   SUM(Val1) as 'Val1',
   SUM(Val2) as 'Val2',
   SUM(Val3) as 'Val3',
   (SUM(Val1) + SUM(Val2) + SUM(Val3)) as 'Total'
FROM Emp
Run Code Online (Sandbox Code Playgroud)

  • 请注意,如果Val为NULL,则第一个查询的总和将为NULL. (12认同)
  • 在第二个查询中,如果所有行的 `Valx` 都是空的,这个查询就会中断。 (2认同)
  • null问题的一个简单解决方案是添加一个isnull函数 - SUM(isnull(val1,0))为'Val1' (2认同)

Sal*_*med 40

您还必须了解null记录:

SELECT  (ISNULL(Val1,0) + ISNULL(Val2,0) + ISNULL(Val3,0)) as 'Total'
FROM Emp
Run Code Online (Sandbox Code Playgroud)

用法ISNULL:

ISNULL(col_Name, replace value)
Run Code Online (Sandbox Code Playgroud)

  • 如果您正在使用“mysql”,那么您需要使用“IFNULL()” (4认同)

mar*_*c_s 24

就像一个普通的SELECT

SELECT 
   Val1, Val2, Val3,
   Total = Val1 + Val2 + Val3
FROM dbo.Emp
Run Code Online (Sandbox Code Playgroud)

或者您想确定总数并使用这些值更新表格?

UPDATE dbo.Emp
SET Total = Val1 + Val2 + Val3
Run Code Online (Sandbox Code Playgroud)

如果你想让这个总数始终是当前的 - 你的表中应该有一个计算列:

ALTER TABLE dbo.Emp
ADD CurrentTotal AS Val1 + Val2 + Val3 PERSISTED
Run Code Online (Sandbox Code Playgroud)

然后,您将始终获得当前总数 - 即使值发生变化:

SELECT 
   Val1, Val2, Val3, CurrentTotal
FROM dbo.Emp
Run Code Online (Sandbox Code Playgroud)


小智 5

尝试这个:

select sum(num_tax_amount+num_total_amount) from table_name;
Run Code Online (Sandbox Code Playgroud)