创建一个物化视图用来提高查询数据速度,要创建的视图是sj_jf_zgyb_dw,和sj_jf_zgyb_dw表,这里使用的是将视图sj_jf_zgyb_dw查询出来的数据存储在相应的sj_jf_zgyb_dw表中来减少以后查询相同的数据不用再从视图中获取而提高速度.
— Create table
create table SJ_JF_ZGYB_DW ( XZDM VARCHAR2(64), XZQHDM VARCHAR2(6), TCQDM VARCHAR2(6), DWBH VARCHAR2(64), FKSSQ VARCHAR2(6), FKSSQ_DY VARCHAR2(6), DZRQ_DW VARCHAR2(8), ZJFS VARCHAR2(2), JFLX VARCHAR2(1), JFJE_DW_YJ NUMBER(38,6), JFJE_DW_SJ NUMBER(38,6), JFJE_DWHGR NUMBER(38,6), JFJS_DW NUMBER(38,6), JFBL_DW NUMBER(38,6), JFRS_YJ NUMBER(38,6), JFRS_SJ NUMBER(38,6), DZBZ_DW VARCHAR2(1) ) tablespace HYGEIA pctfree 10 initrans 1 maxtrans 255 storage ( initial 64K minextents 1 maxextents unlimited ); -- Add comments to the columns comment on column SJ_JF_ZGYB_DW.XZDM is '险种名称 该项填“城镇职工基本医疗保险” '; comment on column SJ_JF_ZGYB_DW.XZQHDM is '行政区划代码 指社保机构所在地的行政区划代码,参照GB/T2260-2007中华人民共和国行政区划代码填列。 '; comment on column SJ_JF_ZGYB_DW.TCQDM is '统筹区代码 指此险种的统筹区,填列所属统筹区的行政区划代码。 '; comment on column SJ_JF_ZGYB_DW.DWBH is '单位编号 指系统内单位的唯一标识 '; comment on column SJ_JF_ZGYB_DW.FKSSQ is '费款所属期 指核定用人单位或个人社会保险费时的年月,表示方式为YYYYMM '; comment on column SJ_JF_ZGYB_DW.FKSSQ_DY is '对应费款所属期 指核定的社会保险费应收取年月或社会保险待遇应付出年月,表示方式为YYYYMM当对应费款所属期小于费款所属期时,为补收或补发;当对应费款所属期等于费款所属期时,为正常缴费/待遇;当对应费款所属期大于费款所属期时,为趸缴或预支付 '; comment on column SJ_JF_ZGYB_DW.DZRQ_DW is '单位到帐日期 指社保机构实际收到社会保险费时的日期,通常采用自然日期,表示方式为YYYYMMDD。当原始数据仅能精确到月份,而无法确定到“日”时,统一设为当月第一天。 '; comment on column SJ_JF_ZGYB_DW.ZJFS is '征缴方式 指社保机构收取社会保险费的方式,按下列代码填列:1-银行托收,2-税务代征/税务全责征收,3-经办机构自收,4-学校代收,5-社区代收 ,99-其他 '; comment on column SJ_JF_ZGYB_DW.JFLX is '缴费类型 按下列代码填列:1-正常,2-补缴,3-退费,4-预交,5-缓缴 '; comment on column SJ_JF_ZGYB_DW.JFJE_DW_YJ is '单位应缴金额 指用人单位应缴纳的社会保险费金额。不可为空,可填0 '; comment on column SJ_JF_ZGYB_DW.JFJE_DW_SJ is '单位实缴金额 指用人单位实际缴纳的社会保险费金额。不可为空,可填0 '; comment on column SJ_JF_ZGYB_DW.JFJE_DWHGR is '单位金额划个人账户金额 指从用人单位实际缴纳的社会保险费中划转记入个人账户的金额。不可为空,可填0 '; comment on column SJ_JF_ZGYB_DW.JFJS_DW is '单位缴费基数 指单位缴纳社会保险费的基数。不可为空,可填0 '; comment on column SJ_JF_ZGYB_DW.JFBL_DW is '单位缴费比例 指用人单位缴纳保险费的比例。比例以小数方式表示,如“0.20” '; comment on column SJ_JF_ZGYB_DW.JFRS_YJ is '应缴人数 指用人单位当月应缴纳社会保险费人数。不可为空,可填0 '; comment on column SJ_JF_ZGYB_DW.JFRS_SJ is '实缴人数 指用人单位当月实际缴纳社会保险费人数。不可为空,可填0 '; comment on column SJ_JF_ZGYB_DW.DZBZ_DW is '单位到账标志 按下列代码填列:1-已到账,0-未到账 '; create materialized view SJ_JF_ZGYB_DW on prebuilt table WITH REDUCED PRECISION--当与视图相应的表中的字段长度不匹配时减少精度 refresh force on demand enable query rewrite as select '城镇职工基本医疗保险' as XZDM, lt.center_id as XZQHDM, substr(lt.center_id,0,4) as TCQDM, to_char(lt.corp_id) as DWBH, lt.calc_prd as FKSSQ, to_char(lt.to_pay_date, 'yyyymm') as FKSSQ_DY, to_char(lt.fac_pay_date, 'yyyymmdd') as DZRQ_DW, '1' as ZJFS, to_char(lt.topay_type) as JFLX, sum(decode(pm.indi_flag, 1, lc.pay_money, 0)) as JFJE_DW_YJ, sum(decode(lt.payed_flag, 1, decode(pm.indi_flag, 1, lc.pay_money, 0), 0)) as JFJE_DW_SJ, Sum(decode(pm.money_id, 5, lc.pay_money, 0)) as JFJE_DWHGR, sum(decode(lc.money_id, 4, abs(sign(lc.pay_money) * lc.calc_base), 0)) as JFJS_DW, 0.07 as JFBL_DW, sum(decode(lc.money_id, 4, lc.calc_man_sum, 0)) as JFRS_YJ, sum(decode(lc.money_id, 4, lc.calc_man_sum, 0)) as JFRS_SJ, decode(lt.payed_flag, 1, '1', '0') as DZBZ_DW From lv_insr_topay lt, lv_cropfundpar lc, pfs_money_info pm Where lt.pay_info_no = lc.pay_info_no And pm.money_id = lc.money_id And lt.insr_detail_code = 2 And lt.src_type = 1 /* And lt.center_id=430701 And lt.calc_prd between '201201' and '201202'*/ group by lt.center_id, lt.corp_id, lt.calc_prd, to_char(lt.to_pay_date, 'yyyymm'), to_char(lt.fac_pay_date, 'yyyymmdd'), to_char(lt.topay_type), decode(lt.payed_flag, 1, '1', '0');
这里是手工刷新数据,因为有上十亿的数,查询的是十几年的医保缴费数据
call dbms_mview.refresh('SJ_JF_ZGYB_DW');