欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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期税额

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的功能是很强大的,灵活的运用他,可以使我们的统计查询简化很多。

如后笔误。请谅解。
相关标签: SQL