获取最后一行的列总和,很好的做法



我正在使用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 小提琴

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

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

相关内容

最新更新