sql统计 本期 ,上期 ,去年同期 数据
程序员文章站
2022-06-05 09:28:14
...
1.测试数据表
申报征收信息表SB_ZSXX
序号 税种 税额 入库日期
XH ZSXM_DM SE RKRQ
1 01 1000 2007-8-23
2 01 500 2007-7-23
3 01 700 2006-8-23
ok..我们现在要统计本月入库税额,上期(上月)入库税额,去年同期(去年同月)入库税额
sql查询结果类似下面
ZSXM_DM 本期 上期 去年同期
01 1000 500 700
二。查询sql
这里主要使用case when,来构造新列
统计3期税额
当然,我们还可以按税种(zsxm_dm)分组(group by)求和
大家可以看到,case when的功能是很强大的,灵活的运用他,可以使我们的统计查询简化很多。
如后笔误。请谅解。
申报征收信息表SB_ZSXX
序号 税种 税额 入库日期
XH ZSXM_DM SE RKRQ
1 01 1000 2007-8-23
2 01 500 2007-7-23
3 01 700 2006-8-23
ok..我们现在要统计本月入库税额,上期(上月)入库税额,去年同期(去年同月)入库税额
sql查询结果类似下面
ZSXM_DM 本期 上期 去年同期
01 1000 500 700
二。查询sql
这里主要使用case when,来构造新列
统计3期税额
select zsxm_dm,
case when rkrq <to_date('2007-09-01','YYYY-MM-DD') and rkrq >=to_date('2007-08-01','YYYY-MM-DD') then se end bq,---本期
case when rkrq <to_date('2007-08-01','YYYY-MM-DD') and rkrq >=to_date('2007-07-01','YYYY-MM-DD') then se end sq,---上期
case when rkrq <to_date('2006-09-01','YYYY-MM-DD') and rkrq >=to_date('2006-08-01','YYYY-MM-DD') then se end qntq --去年同期
from sb_zsxx
当然,我们还可以按税种(zsxm_dm)分组(group by)求和
select zsxm_dm,
sum(case when rkrq <to_date('2007-09-01','YYYY-MM-DD') and rkrq >=to_date('2007-08-01','YYYY-MM-DD') end)bq,---本期
sum(case when rkrq <to_date('2007-08-01','YYYY-MM-DD') and rkrq >=to_date('2007-07-01','YYYY-MM-DD') end) sq,---上期
sum(case when rkrq <to_date('2006-09-01','YYYY-MM-DD') and rkrq >=to_date('2006-08-01','YYYY-MM-DD') end) qntq---去年同期
from sb_zsxx
group by zsxm_dm
大家可以看到,case when的功能是很强大的,灵活的运用他,可以使我们的统计查询简化很多。
如后笔误。请谅解。
下一篇: oracle中decode函数的用法