当前位置: 代码迷 >> Oracle认证考试 >> 心急如焚,各位大侠们,跪求一个统计的SQL查询
  详细解决方案

心急如焚,各位大侠们,跪求一个统计的SQL查询

热度:9316   发布时间:2013-02-26 00:00:00.0
急如星火,各位大侠们,跪求一个统计的SQL查询
各位大侠,小弟遇到一个SQL查询的问题,请指教。
一张表:orderDeal:
  (两个状态1和2)(当orderState为1,时,它是空,当orderState为2时,它为1办理或2部分办理或拒绝办理3)
managerName orderState orderResult deptId
刘 1 101
王 2 2 102
刘 2 1 101
刘 2 3 101
王 1 102
王 2 1 102
刘 1 101  
金 2 2 102
刘 2 1 101  
刘 2 1 101  
李 2 1 101 

表: dept
dept_id dept_name
101 市场部
102 工程部
103 实施部


现要用SQL查询出: (orderState:1) (orderState:2) (orderState:3)(申请个数-三种状态的办理数(表中同一managerName出现次数)
dept_name managerName 办理个数 部分办理个数 拒绝办理个数 未办理个数 申请个数
  市场部 刘 3 0 1 2 6
  市场部 李 1 0 0 0 1
  工程部 王 1 1 0 1 3
  工程部 金 0 1 0 0 1

各位大侠们,请指教。(PS:很急)

------解决方案--------------------------------------------------------
select B.dept_name,A.managerName,
 办理个数=sum(case when orderState=2 and orderResult=1 then 1 else 0 end ),
部分办理个数=sum(case when orderState=2 and orderResult=2 then 1 else 0 end ),
拒绝办理个数=sum(case when orderState=2 and orderResult=3 then 1 else 0 end ),
未办理个数=sum(case when orderState=1 then 1 else 0 end ),
申请个数 =count(*)
from OrderDeal A
left join dept B
on A.deptid=B.dept_id
group by B.dept_name,A.managerName


------解决方案--------------------------------------------------------
修改:
select B.dept_name,A.managerName,
sum(case when orderState=2 and orderResult=1 then 1 else 0 end ) 办理个数,
sum(case when orderState=2 and orderResult=2 then 1 else 0 end ) 部分办理个数,
sum(case when orderState=2 and orderResult=3 then 1 else 0 end ) 拒绝办理个数,
sum(case when orderState=1 then 1 else 0 end ) 未办理个数,
count(*) 申请个数 
from OrderDeal A
left join dept B
on A.deptid=B.dept_id
group by B.dept_name,A.managerName

------解决方案--------------------------------------------------------
select B.dept_name,A.managerName, 
sum(decode(orderState,1,1,0)) 办理个数, 
sum(decode(orderState,2,1,0)) 部分办理个数, 
sum(decode(orderState,3,1,0)) 拒绝办理个数, 
sum(decode(orderState,null,1,0)) ) 未办理个数, 
count(*) 申请个数 
from OrderDeal A 
left join dept B 
on A.deptid=B.dept_id 
group by B.dept_name,A.managerName
------解决方案--------------------------------------------------------
ding