Sql语句:
select b.departmentname, b.name,
count(case when b.businessstate='NOTSUBMIT' then 1 else null end ) NOTSUBMIT,
count(case when b.businessstate='ABANDONED' then 7 else null end ) ABANDONED,
count(b.id) allCounts
from business b group by b.departmentname, b.name
通过case when then else end这句话来限定条件,count进行统计。
另外,可以先建一张视图,通过sum来进行统计:
视图:
create or replace view view_business_statistics as
select b.id, b.name as BUSINESSNAME,b.DEPARTMENTNAME,b.sldate as SLDATE, b.applydate as APPLYDATE,
decode(b.businessstate,'NOTSUBMIT',1,0) as NOTSUBMITNUM,
decode(b.businessstate,'APPROVING',1,0) as APPROVINGNUM,
from business b;
通过sum进行统计的sql语句:
select b.departmentname, b.name,
sum(b.NOTSUBMITNUM) NOTSUBMIT,
sum(b.ABANDONED) ABANDONED,
count(b.id) allCounts
from business b group by b.departmentname, b.name
建立视图使用oracle自带的decode关键字(相当于case when),重新给列复制0和1,使用sum得到统计总数。
建立视图的思想是提高灵活性。