获取最后一栏的总和,良好做法?

时间:2012-12-13 19:26:17

标签: sql sql-server sql-server-2008

我正在使用sql server 2008.我正在进行一个SSIS将使用的查询。

我在select:

上有这些数据
  Master_Code   Jan 
    1            4
    2            5

我想在最后一行添加一个总计,如下所示:

  Master_Code   Jan 
    1            4
    2            5
    Total        9

从sql执行此操作是好的做法,还是应该从SSIS执行此操作?

2 个答案:

答案 0 :(得分:2)

您可以使用UNION ALL轻松完成此操作。关键是master_code字段必须与字符串total的数据类型相同,因此您必须将其转换为:

select cast(master_code as varchar(10)) master_code, jan
from yourtable
union all
select 'Total', sum(jan)
from yourtable

请参阅SQL Fiddle with Demo

或者您可以使用GROUP BY with ROLLUP

select 
  case 
    when master_code is not null 
    then cast(master_code as varchar(10)) else 'total' end master_code, 
  sum(jan) Jan
from yourtable
group by master_code with rollup

请参阅SQL Fiddle with Demo

答案 1 :(得分:1)

查看您的查询似乎数据类型必须不同(可能是int vs varcharnull),这使得SQL方面成为一个非常可疑的选择。我的意思是从查询重用角度看,特殊值非常糟糕。

理想情况下,我会制作两个不同的查询(一个用于详细信息,一个用于总计),两个查询都在SQL Server中运行,并使用SSIS将结果合并到数据转换中。这可能是最有效和最干净的方式。