在累积和SQL上返回NULL

时间:2015-05-11 08:13:40

标签: sql sql-server database tsql

我有个人销售表,我想将其汇总为两列,每月总计为一列,累计金额为另一列。

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子句条件的付款,所以我不确定为什么那个月没有付款会影响前几个月的金额?

非常感谢。

0 个答案:

没有答案