2013-07-30 32 views
1

我有以下存储过程的工作。它在特定年份(2013年)对特定TIN中的记录进行总结。 TIN有一个纳税人姓名和TIN以及结果。 列呈现为TIN,纳税人姓名,总计。SQL将多个结果组合到一个表中并带有Sum

这是一个基于会计的应用程序。

我想要做的是添加第4列,显示另一年的总和,因此这些可以在以后进行比较。今年将始终是上一年(本例中为2012年)。

可能有或没有前一年的任何条目,所以我必须给它一个0或过去一年的空值。我正在努力弄清楚如何将它们结合在一起。 不知何故,我将不得不匹配每个TIN,并获得前一年的总和,如果它存在。 这个查询的部分看起来像这样:Trans.Main_AbstractNumber = 136和SUBSTRING(Trans.Main_TaxPeriod,1,4)='2012',使用SUM(Main_AbstractAmount)作为PreviousTotal或类似的东西。

有没有人有任何想法我应该如何解决这个问题? 谢谢

Select Trans.Main_TIN, C.TaxpayerName, SUM(Main_AbstractAmount) as Total 
from qetl.RECORDS Trans join qetl.TAXPAYERS C on Trans.Main_TIN=C.TIN 
where Trans.Main_AbstractNumber =136 and SUBSTRING(Trans.Main_TaxPeriod,1,4) = '2013' 
GROUP BY Trans.Main_TIN,C.TaxpayerName 

回答

0

你想使用条件求和:

Select Trans.Main_TIN, C.TaxpayerName, 
     SUM(case when SUBSTRING(Trans.Main_TaxPeriod,1,4) = '2013' then Main_AbstractAmount end) as Total2013, 
     SUM(case when SUBSTRING(Trans.Main_TaxPeriod,1,4) = '2012' then Main_AbstractAmount end) as Total2012 
from qetl.RECORDS Trans join 
     qetl.TAXPAYERS C 
     on Trans.Main_TIN=C.TIN 
where Trans.Main_AbstractNumber = 136 
GROUP BY Trans.Main_TIN, C.TaxpayerName ; 
相关问题