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得到統計總數。
建立視圖的思想是提高靈活性。