SUM总计年份

时间:2013-09-03 17:08:53

标签: sql ssis

我正在开发一个人力资源项目,每周从我们的SAP系统接收一次导出。 它提供输入特定帐户总帐的每周总计。

Company Code    G/L Fiscal Year Local Currency  Amount in LC
0020            4544000 2012            USD         575.00
0020            4544000 2012            USD         252.70
0020            4544000 2012            USD         89.75
0020            4544000 2012            USD         44.00
NULL            NULL    2012 Total      NULL        86,422.58
0020            4544000 2013            USD         2,000.00
0020            4544000 2013            USD        -2,000.00
0020            4544000 2013            USD         35.00
0020            4544000 2013            USD         35.00
NULL            NULL    2013 Total      NULL        110,979.23
NULL            0004544000 Total        NULL        197,401.81
Grand Total     NULL    NULL            NULL        197,401.81

(我删除了几行以节省空间)

我需要的是简单的年度总和。

Fiscal Year       Amount in LC  
2012              86,422.58
2013              110,979.23

它需要持续到2016年或更长时间。

我导入的文件是从SAP系统导出的.xlsx。 由于第一对夫妇无法使用,我不得不聘请顾问来完善出口。

我目前有一个SSIS包,用于导入数据,在将数据导出到临时表之前通过聚合运行。但是,Already Sumed总计导致临时表重复。如果有办法运行派生列来删除数据,那么这也会有所帮助。

聚合数据如下所示。

Fiscal Year     Amount in LC
NULL            394803.62         <- Needs to be removed
2012            86422.58          <- Correct
2013            110979.23         <- Correct
2012 Total      86422.58          <- Duplication, Needs to be removed
2013 Total      110979.23         <- Duplication, Needs to be removed

感谢您提供的任何帮助。

2 个答案:

答案 0 :(得分:1)

我假设因为你在SSIS中运行聚合,所以正在执行sql任务。

您应该编辑该sql任务的WHERE条件以排除记录:

WHERE [Fiscal Year] IS NOT NULL 
  AND [Fiscal Year] NOT LIKE '%Total%'

如果不使用sql任务,则可以在聚合和ole db目标之间添加条件分割。

答案 1 :(得分:1)

删除SSIS中的聚合并导出到表格。我假设该表看起来像您所描述的“从我们的SAP系统每周导出”表。

然后,编写一个存储过程以从表中获取结果:

Select LEFT([Fiscal Year],4) AS [Fiscal year] , [Amount in LC]
/* NOT NULL will exclude NULLs in [Fiscal Year] */
From <your table>
Where ([Fiscal Year] IS NOT NULL) AND [Fiscal Year] LIKE '%Total'
/* Group by eliminates duplicates */
Group By [Fiscal Year], [Amount in LC]

聚合已经在表格中,你只是把它拿出来。