怎么改题目了?搞的我还把开始的要求给算出来了,如下:
select
a.月份,
a.本月收入总额,
case when b.本月收入总额=0 or b.本月收入总额 IS null then null else
(a.本月收入总额-b.本月收入总额)/b.本月收入总额*100 end 收入增长百分比,
a.本月支出总额,
case when b.本月支出总额=0 or b.本月支出总额 IS null then null else
(a.本月支出总额-b.本月支出总额)/b.本月支出总额*100 end 支出增长百分比,
a.本月余额,
case when b.本月余额<=0 or b.本月余额 IS null then null else
(a.本月余额-b.本月余额)/b.本月余额*100 end 余额增长百分比
from
(
select
MONTH(日期) 月份,
isnull(SUM(收入金额),0) 本月收入总额,
isnull(SUM(支出金额),0) 本月支出总额,
isnull(SUM(收入金额),0)-isnull(SUM(支出金额),0) 本月余额
from 收支表
group by MONTH(日期)
) a
left join
(
select
MONTH(日期) 月份,
isnull(SUM(收入金额),0) 本月收入总额,
isnull(SUM(支出金额),0) 本月支出总额,
isnull(SUM(收入金额),0)-isnull(SUM(支出金额),0) 本月余额
from 收支表
group by MONTH(日期)
) b
on a.月份=b.月份+1
order by a.月份 desc
搞到最后才发现你是ACCESS数据库,晕死,那以上SQL Server 代码可能有些地方要修改
比如:case when then else end语句,不知ACCESS是否支持;
left join可能要改成left outer join;
isnull()函数,不知access是否支持;
month()函数,不知access是否支持;
用ACCESS完成这么复杂的运算,的确困难.
补充,用case主要是用来排除0和空值,比如,你6月份的收入为0,7月份的收入3500,那么收入增长百分比就是3500/0,结果是无穷大,你在ACCESS中怎么排除这种情况?
温馨提示:答案为网友推荐,仅供参考