我有个人销售表,我想将其汇总为两列,每月总计为一列,累计金额为另一列。
select Year, Month, 'Acquisition Income' = SUM(PAYMENTAMOUNT),
'Acquisition Cumulative' = (select SUM(PAYMENTAMOUNT)
from #CampaignPayments b
where (a.Year >= b.Year and a.Month >= b.Month)
or (a.Year > b.Year) )
into #CampaignTotals
from #CampaignPayments a
group by YEAR, MONTH
order by YEAR asc, MONTH asc
但是,我遇到了一些麻烦,几个月来没有付款,因此我那个月的“收入收入”是NULL
。
Year Month Acquisition Income Acquisition Cumulative
2013 5 121782 121782
2013 6 25959.2 147741.2
2013 7 2875 150616.2
2013 8 1995 152611.2
2013 9 625 153236.2
2013 10 590 153826.2
2013 11 935 154761.2
2013 12 550 155311.2
2014 1 777 156088.2
2014 2 210 156298.2
2014 3 75 156373.2
2014 4 520 156893.2
2014 5 150 157043.2
2014 6 340 157383.2
2014 7 NULL NULL
2014 8 30 157413.2
我如何
(a):在“收入收入”列中返回0
而不是NULL
(我已经尝试了coalesce(SUM(paymentamount),0)
以及isnull
,但都没有工作。)
(b):继续计算“收购累积”栏,即使该月没有付款? (即总和与前一个月相同)
老实说,我并不完全了解累积金额是如何工作的 - 对我来说似乎每行都返回,它应该总结所有符合where / or子句条件的付款,所以我不确定为什么那个月没有付款会影响前几个月的金额?
非常感谢。