从表中检索特定列和

时间:2012-09-22 16:07:51

标签: sql-server-2008 select filter aggregate-functions calculated-columns

我在同一个表中有多个列的数据:

Col1    Col2    Col3    Col4    Col5    Col6

我想从Col1到Col3,从Col3到Col6,或从Col1到Col6从表中检索总和,但我无法弄清楚如何选择这些特定的列。

2 个答案:

答案 0 :(得分:2)

您可以创建一个视图:

CREATE VIEW dbo.col_sums_from_some_table
AS
  SELECT 
     [Col1-3] = Col1 + Col2 + Col3,
     [Col3-6] = Col3 + Col4 + Col5 + Col6,
     [Col1-6] = Col1 + Col2 + Col3 + Col4 + Col5 + Col6
  FROM dbo.table_name;

(如果这些列可以为空,你需要用COALESCE包装@davek指出的那些。)

然后您可以直接选择您所在的列或应用SUM():

SELECT [Col1-3] FROM dbo.col_sums_from_some_table;

SELECT SUM([Col1-6] FROM dbo.col_sums_from_some_table;

您还可以在表格上创建计算列,例如(我在这里猜测数据类型):

ALTER TABLE dbo.table_name ADD [Col1-3] 
  AS CONVERT(INT, COALESCE(Col1, 0) + COALESCE(Col2, 0) + COALESCE(Col3, 0));

您也可以选择保留/索引这些计算列。

答案 1 :(得分:1)

对于单行:

select col1 + col2 + col3 from mytable

(假设所有列都是数字)

用于汇总特定列的所有值:

declare @sum int
set @sum = 0

select @sum = @sum + col1 from mytable

将所有行汇总为例如第1列和第2列:

declare @sum int
set @sum = 0

select @sum = @sum + col1 + col2 from mytable

要有效地处理空值,可以使用合并函数:

declare @sum int
set @sum = 0

select @sum = @sum + coalesce(col1, 0) + coalesce(col2, 0) from mytable