我正在使用sql server 2008.我正在进行一个SSIS将使用的查询。
我在select:
上有这些数据 Master_Code Jan
1 4
2 5
我想在最后一行添加一个总计,如下所示:
Master_Code Jan
1 4
2 5
Total 9
从sql执行此操作是好的做法,还是应该从SSIS执行此操作?
答案 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
或者您可以使用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
答案 1 :(得分:1)
查看您的查询似乎数据类型必须不同(可能是int
vs varchar
或null
),这使得SQL方面成为一个非常可疑的选择。我的意思是从查询重用角度看,特殊值非常糟糕。
理想情况下,我会制作两个不同的查询(一个用于详细信息,一个用于总计),两个查询都在SQL Server中运行,并使用SSIS将结果合并到数据转换中。这可能是最有效和最干净的方式。