我正在开发一个人力资源项目,每周从我们的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
感谢您提供的任何帮助。
答案 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]
聚合已经在表格中,你只是把它拿出来。