createorreplaceproceduresp_kr_ns_hn_mtv_dtal(iv_dateinvarchar2,oi_returnoutinteger)/**head*@namemasakr#sp_kr_ns_hn_mtv_dtal*@caption河南手机电视专区日累计报表*@type日报表*@parameteriv_dateinvarchar2统计日期,格式:yyyymmdd*@parameteroi_returnoutinteger执行状态码,0正常,其它出错*@description需求:267536,作用:河南手机电视专区日累计报表和日累计智能查询,运行时间:120秒*@targetmasakr#tb_kr_ns_hn_mtv_dtal河南手机电视专区日累计报表*@targetmasakr#tb_kr_ns_hn_mtv_list_dtal河南手机电视专区日累计智能查询*@sourcemasadw#tb_dw_su_stm_list_cur手机电视清单表*@sourcemasamk#tb_mk_sc_user_dtal用户日累计事实表*@middlemasakr#tb_kr_ns_hn_mtv_list_dt_tmp*@middlemasakr#tb_kr_ns_hn_mtv_list_dt_tmp1*@version2.0*@author张三*@create-date2009-08-24*@todo*@version*@mender*@modify_date*@modify_desc*@copyright**厂家河南移动*/is/**@description变量定义*/vi_task_idinteger;--任务日志idvv_task_namevarchar2(30);--任务名vv_table_namevarchar2(30);--表名vv_task_signvarchar2(30);--任务标识vv_task_posvarchar2(50);--任务位置vi_err_codeinteger;--出错代码vv_err_msgvarchar2(200);--出错信息vi_resultinteger;--临时结果exc_returnexception;--程序中间返回自定义异常exc_errorexception;--程序出错返回自定义异常v_ownervarchar2(30);--属主v_proc_namevarchar2(30);--通知报表刷新的过程名version_datevarchar2(8);--报表刷新的版本日期v_tz_flaginteger;--通知成功标志(0成功)vd_datedate;--统计日期vd_first_datedate;--统计日月初第一天begin/**@description允许并行处理*/executeimmediate'altersessionenableparalleldml';/***@description变量初始化*/vv_task_name:='sp_kr_ns_hn_mtv_dtal';vv_table_name:='tb_kr_ns_hn_mtv_dtal';vd_date:=to_date(iv_date,'yyyymmdd');vd_first_date:=trunc(vd_date,'mm');v_owner:='masakr';v_proc_name:='sp_kr_ns_hn_mtv_dtal';version_date:=iv_date;vv_task_sign:=iv_date;/***@description程序开始日志*/vv_task_pos:='程序开始日志';masasys.sp_kr_sys_log(vi_task_id,vv_task_name,vv_table_name,vv_task_sign,1,null,null,null);/***@description参数以及数据源检查*/vv_task_pos:='检查输入参数';if(iv_dateisnull)thenvi_err_code:=-1;vv_err_msg:='没有输入统计日期参数';raiseexc_error;endif;vv_task_pos:='判断源数据源是否存在';selectcount(*)intovi_resultfrommasadw.tb_dw_su_stm_list_curawherea.deal_date=vd_dateandrownum=1;ifvi_result=0thenvi_err_code:=-40000;vv_err_msg:='数据源masadw.tb_dw_su_stm_list_cur没有统计日数据';raiseexc_error;endif;selectcount(*)intovi_resultfrommasamk.tb_mk_sc_user_dtalawherea.statis_date=trunc(sysdate-1)andrownum=1;ifvi_result=0thenvi_err_code:=-40001;vv_err_msg:='数据源masamk.tb_mk_sc_user_dtal没有统计日数据';raiseexc_error;endif;/***@description报表处理开始*/vv_task_pos:='删除旧数据';deletefromtb_kr_ns_hn_mtv_dtalwherestatis_date=vd_date;delete/*+parallel(a,4)*/fromtb_kr_ns_hn_mtv_list_dtalawherestatis_date=vd_dateorstatis_date=vd_date-3;commit;vv_task_pos:='清除临时表数据';executeimmediate'truncatetabletb_kr_ns_hn_mtv_list_dt_tmp';executeimmediate'truncatetabletb_kr_ns_hn_mtv_list_dt_tmp1';vv_task_pos:='手机视频使用客户日累计数据';insertintotb_kr_ns_hn_mtv_list_dt_tmp(serv_number,--号码is_mf_cust,--是否免费业务用户mf_use_count,--免费业务使用次数is_ac_cust,--是否按次业务用户ac_use_count,--按次业务使用次数is_by_cust,--是否包月用户by_use_count,--包月业务使用次数total_sr--按次收入)select/*+parallel(a,8)*/a.serv_number,--号码casewhena.operation_code='20810000'then'1'else'0'end,--是否免费业务用户casewhena.operation_code='20810000'anda.play_duration0then1else0end,--免费业务使用次数casewhena.operation_code='20820000'then'1'else'0'end,--是否按次业务用户casewhena.operation_code='20820000'anda.cdr_info_fee0then1else0end,--按次业务使用次数casewhena.operation_code='10830000'then'1'else'0'end,--是否包月用户casewhena.operation_code='10830000'anda.play_duration0then1else0end,--包月业务使用次数casewhena.operation_code='20820000'thena.cdr_info_feeelse0end--按次收入frommasadw.tb_dw_su_stm_list_curawherea.operation_codein('10830000','20810000','20820000')anda.deal_datebetweenvd_first_dateandvd_date;commit;vv_task_pos:='汇总手机视频使用客户数日累计明细数据';insertintotb_kr_ns_hn_mtv_list_dtal(statis_date,--统计日期serv_number,--号码area_code,--地区编码area_name,--归属地市公司is_mf_cust,--是否免费业务用户mf_use_count,--免费业务使用次数is_ac_cust,--是否按次业务用户ac_use_count,--按次业务使用次数is_by_cust,--是否包月用户by_use_count,--包月业务使用次数total_sr--总收入)select/*+parallel(c,8)parallel(a,4)*/vd_date,--统计日期a.serv_number,--号码b.area_code,--地区编码max(trim(b.area_code_name)),--归属地市公司max(nvl(a.is_mf_cust,'0')),--是否免费业务用户sum(nvl(a.mf_use_count,0)),--免费业务使用次数max(nvl(a.is_ac_cust,'0')),--是否按次业务用户sum(nvl(a.ac_use_count,0)),--按次业务使用次数max(nvl(a.is_by_cust,'0')),--是否包月用户sum(nvl(a.by_use_count,0)),--包月业务使用次数casewhenmax(nvl(a.is_by_cust,'0'))='1'thensum(nvl(a.total_sr,0))/100+10elsesum(nvl(a.total_sr,0))/100end--总收入frommasamk.tb_mk_sc_user_dtalc,tb_kr_ns_hn_mtv_list_dt_tmpa,masadw.tb_dic_area_codebwheretrim(c.area_code)=trim(b.area_code)anda.serv_number=c.serv_numberandc.user_status_id'H'andc.statis_date=trunc(sysdate-2)groupbya.serv_number,--号码b.area_code;commit;vv_task_pos:='汇总报表数据';insertintotb_kr_ns_hn_mtv_dtal(statis_date,area_prov,--省权area_desc,--地区名称area_code,--区号--mf_cust_count,--免费业务用户数mf_use_count,--免费业务使用次数ac_cust_count,--按次业务用户数ac_use_count,--按次业务使用次数ac_sr,--按次业务收入by_cust_count,--包月业务用户数by_use_count,--包月业务使用次数by_sr,--包月业务收入total_cust_count,--总用户数total_sr--总收入)selectvd_date,-1,casewhengrouping(trim(a.area_code))=1then'全省'elsemax(b.area_code_name)end,decode(grouping(trim(a.area_code)),1,'Z',trim(a.area_code))area_code,--count(distinctcasewhena.is_mf_cust='1'thena.serv_numbe