用SQL统计数据库报表

用SQL统计数据库报表,第1张

select 村名,sum(case when 内容分类='家庭矛盾' then 1 end) 家庭矛盾, sum(case when 内容分类='自然灾害、环境保护' then 1 end) 自然灾害、环境保护, sum(case when 内容分类='经济' then 1 end) 经济, sum(case when 处理情况='已办结' then 1 end) 已办结,sum(case when 处理情况='正在办结' then 1 end) 正在办结,sum(case when 处理情况='未办结' then 1 end) 未办结 from table group by 村名

首先我要说下一问题的提出者,一定要给出你的数据库类型,应为SQL是针对数据库有所区别的,以下我给出了1楼的回答者,针对oracle数据库的答案。1楼的是针对sql Server的吧。

-- create sample table

create table tab1 (id int, output_style char(1), amount int, output_date date)

insert into tab1 values(1,'D',1000,to_date('2009-11-12','yyyy-mm-dd'))

insert into tab1 values(2,'C',1000,to_date('2009-11-12','yyyy-mm-dd'))

insert into tab1 values(3,'G',1000,to_date('2009-12-12','yyyy-mm-dd'))

insert into tab1 values(4,'Z',1000,to_date('2010-01-01','yyyy-mm-dd'))

insert into tab1 values(5,'D',1300,to_date('2009-11-12','yyyy-mm-dd'))

insert into tab1 values(6,'C',1400,to_date('2009-11-12','yyyy-mm-dd'))

insert into tab1 values(7,'G',2000,to_date('2009-12-12','yyyy-mm-dd'))

insert into tab1 values(8,'Z',1000,to_date('2010-01-01','yyyy-mm-dd'))

-- query

select substr(to_char(output_date,'yyyy-mm-dd'),1,7) as yearmonth,

sum(case when output_style='C' then amount else 0 end) as C_Amount,

sum(case when output_style='G' then amount else 0 end) as G_Amount,

sum(case when output_style='Z' then amount else 0 end) as Z_Amount,

sum(case when output_style='D' then amount else 0 end) as D_Amount from tab1 group by output_date

这个用单一sql还真难写,用存储过程还行。楼主你的需求只与GID和DateAdd有关,可以用游标把这两个字段的内容保存下来。再通过类似,select * from xx group by gid. 再进一步分析。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10000488.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存