1

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

我有一个选择的数据:

  Master_Code   Jan 
    1            4
    2            5

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

  Master_Code   Jan 
    1            4
    2            5
    Total        9

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

4

2 回答 2

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

或者您可以使用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

于 2012-12-13T19:28:33.493 回答
1

查看您的查询,似乎数据类型必须不同(intvsvarcharnull可能),这使其成为 SQL 端的一个非常值得商榷的选择。我的意思是从查询重用角度来看,特殊值真的很糟糕。

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

于 2012-12-13T19:37:59.003 回答