2013-07-30 2 views
1

У меня есть следующая хранимая процедура. Он суммирует записи за определенный год (2013) по конкретному TIN. У TINS ​​есть имя налогоплательщика, идентифицированное с TIN вместе с результатами. Столбцы отображаются как TIN, TaxpayerName, Total.SQL, объединяющий несколько результатов в одну таблицу с суммами

Это бухгалтерское приложение.

Что я хотел бы сделать, это добавить четвертый столбец, который покажет сумму другого года, поэтому их можно сравнить с более поздними. Год будет всегда в предыдущий год (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 

ответ

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 ; 
Смежные вопросы