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