SQL将多个结果组合到一个带Sums的表

时间:2013-07-30 00:56:04

标签: sql stored-procedures transactions

我有以下存储过程正常工作。它汇总了特定年份(2013年)特定TIN的记录。 TINS具有用TIN标识的纳税人姓名以及结果。 列呈现为TIN,TaxpayerName,Total。

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

我想要做的是添加第4列,显示另一年的总和,这样可以比较以后。这一年将始终是前一年(本例中为2012年)。

前一年可能有也可能没有任何入场券,所以我必须在前一年给它一个0或null。我正在努力弄清楚如何将它们组合在一起。 不知何故,我将不得不匹配每个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 

1 个答案:

答案 0 :(得分: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 ;