首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

sql树状数据统计

2014-01-28 
sql树状数据统计,有机构表sys_organ 记录编号V_REC_IDVarchar2 (10)PK 机构IDV_ORGAN_IDVarchar2 (10) 机构

sql树状数据统计
有机构表sys_organ
记录编号  V_REC_ID  Varchar2 (10)  PK
机构ID  V_ORGAN_ID  Varchar2 (10)
机构名称  V_ORGAN_NM  Varchar2 (20)
上级机构记录编号 V_PARENT_REC_ID Varchar2 (10) 空表示无上级部门记录编号,对应本表中V_REC_ID

预约单表order
预约单编号  Order_id Number(6)
预约日期  Order_date Char(8)
预约类型  Order_type Char(1) 1:信用卡2:理财业务3:信贷业务
所属机构ID  Brh_id Char(9)  与表sys_organz中V_ORGAN_ID 对应 ,不过这里的机构都是对应到“各市县”

机构树是这样的
福建省
  福州地区
  各市县
  泉州地区
  各市县

现在因为order表中可以用所属机构ID统计处各个市县的数据了
但是因为省,地区,这些必须是要靠将下级的数据汇总才能得到,自身是不会有order表有机构ID来对应的。
现在问题就是,如果修改这个sql,达到汇总的效果?统计出省,和地区的数据?

 

SQL code
select b.V_ORGAN_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 t_busi_order_dtl a,sys_organ b where  a.Brh_id(+) =b.V_ORGAN_ID  and ( b.V_ORGAN_ID = '350101901' or b.V_ORGAN_ID = '350121901' or b.V_ORGAN_ID = '350122901' or b.V_ORGAN_ID = '350123901' or b.V_ORGAN_ID = '350124901' or b.V_ORGAN_ID = '350125901' or b.V_ORGAN_ID = '350128901' or b.V_ORGAN_ID = '350181901' or b.V_ORGAN_ID = '350182901')  and a.Order_date>='20001105' and a.Order_date<='20091106'group by b.V_ORGAN_ID,b.V_ORGAN_NM






------解决方法--------------------------------------------------------
 

SQL code
select b.v_parent_rec_id,  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 t_busi_order_dtl a,sys_organ b where  a.Brh_id(+) =b.V_ORGAN_ID  and ( b.V_ORGAN_ID in( '350101901','350121901', '350122901' , '350123901','350124901' , '350125901' , '350128901' , '350181901', '350182901')  and a.Order_date>='20001105' and a.Order_date<='20091106'group by rollup(b.v_parent_rec_id)
------解决方法--------------------------------------------------------
如果就这3层的话,试试这个
SELECT B.Order_id,
A.V_ORGAN_NM,         

热点排行