SQL统计数据
有机构表sys_organ
记录编号	V_REC_ID	     Varchar2 (10)	       PK
机构ID	V_ORGAN_ID    Varchar2 (10)	
机构名称	V_ORGAN_NM    Varchar2 (20)	
预约单表order
预约单编号     Order_id	Number(6)	  
预约日期	      Order_date	Char(8)	
预约类型	      Order_type	Char(1)	 1:信用卡2:理财业务3:信贷业务
所属机构ID     Brh_id	Char(9)	 与表sys_organ对应
现在想用sql查询做下统计,查询结果是 机构ID,机构名,信用卡件数,理财件数,信贷件数
说实话,咱count还不知道该怎么用。。。杯具
------解决方案--------------------select a.brh_id,b.V_ORGAN_NM,  
     sum(case when a.Order_type=1 then 1 else 0 end),  
     sum(case when a.Order_type=2 then 1 else 0 end),  
     sum(case when a.Order_type=3 then 1 else 0 end),  
 from order a,sys_organ b  
where B.V_ORGAN_ID=a.Brh_id (+)  
group by a.brh_id,b.V_ORGAN_NM;
------解决方案--------------------没有写反啊,我担心有些“所属机构ID”没有对应的名称。
不过要看楼主的真实数据了。
order_type是写错了,应该是
select a.brh_id,b.V_ORGAN_NM,  
     count(case when a.Order_type=1 then 1 end),  
     count(case when a.Order_type=2 then 1 end),  
     count(case when a.Order_type=3 then 1 end)
 from order a,sys_organ b  
where a.Brh_id =B.V_ORGAN_ID(+)  --这里可以不用(+)  
group by a.brh_id,b.V_ORGAN_NM  
;  
------解决方案--------------------case when语句是标准的sql语句
sum(case when a.Order_type=2 then 1 else 0 end)
这个求和的对象是,当a.Order_type=2时候记1,否则为0,比如3条记录
Order_type
2
1
3
那么这个sum的结果就是1+0+0 = 1;
后面的count也是这样,只不过当Order_type!=2时为Null,不计数
------解决方案--------------------count统计非空的值的数目
sum求和。符合条件的值加1.因此这两个式效果是一样的
sum(case when .. then 1 else 0)
和count(case when .. then 1 else 0)
不一样。因为用count的时候,0和1 和2。。。甚至'a','b'。。是一样的