CREATE OR REPLACE PROCEDURE SP_ZH_FYZHFX ( as_NF in varchar,--年份 as_KSSJ in varchar,--开始月份 as_JSSJ in varchar,--结束月份 as_BZ in varchar,--标志 '0'月份'1'季度'2'半年'3'整年 10: 周 as_MC in varchar,--统计时间的名称 as_BH in varchar,--编号 as_CXSC in varchar2 default '0' --是否重新生成数据 0:如果有数据不重新生成 1:重新生成 --as_YHMSG0 OUT VARCHAR --存储过程提示的错误信息 ) as -- MODIFICATION HISTORY -- Person Date Comments -- yangy 20090329 出院患者药品费用也放在综合查询的SP_ZH_ZHRBTJ中自动产生 -- yangy 20090425 产生周统计指标数据 -- zhr 20090507 占用床位数算法1按在院人数算0按床位算(在院人数-请假+包床) -- qks 2016.09.07 增加TJBH00='0088'(门诊西成制剂收入)、TJBH00='0089'(住院西成制剂收入)、TJBH00='0090'->'1004'(全院药占比); --同时增加参数ZH_YZBXCY控制:药占比 是否改为 =西成药(剔除本院制剂)/总收入(剔除中草药以及本院制剂) -- qks 2017.08.25 增加写入体检收入数据(TJBH00=2001),统一从表ZH_DSFSR0中取数据;并写入总收入TJBH00=0034,同时修改全院药占比TJBH00=1004; for YZCX9-20170826-001 m_mzrc number(10); --门诊人次 m_qqrc number(10); --前期人次 m_mztb number(12,2);--门诊人次同比增长 m_rjfy number(12,2);--门诊人均费用 m_qqfy number(12,2);--门诊前期人均费用 m_rjtb number(12,2);--门诊人均费用同比增长 m_ypfy number(12,2);--门诊药品费用 m_qqyp number(12,2);--门诊前期药品费用 m_yptb number(12,2);--门诊药品费用同比增长 m_ypbl number(12,2);--门诊药品比例 m_qqbl number(12,2);--门诊前期药品比例 m_bltb number(12,2);--门诊药品比例同比增长 z_zyrc number(10); --住院人次(出院人数) z_qqrc number(10); --住院前期人次 z_zytb number(12,2);--住院人次同比增长 z_rjfy number(12,2);--住院人均费用 z_qqfy number(12,2);--住院前期人均费用 z_rjtb number(12,2);--住院人均费用同比增长 z_rtfy number(12,2);--住院人天费用 z_qqrt number(12,2);--住院前期人天费用 z_rttb number(12,2);--住院人天费用同比增长 z_ypfy number(12,2);--住院药品费用 z_qqyp number(12,2);--住院前期药品费用 z_ypbl number(12,2);--住院药品比例 z_qqbl number(12,2);--住院前期药品比例 z_bltb number(12,2);--住院药品比例同比增长 z_zfy0 number(12,2);--出院病人总费用 z_qzfy number(12,2);--前期出院病人总费用 z_zyts number(12,2);--出院病人总住院天数 z_qqts number(12,2);--前期出院病人总住天数 m_KSYF char(2) ;--开始月份 m_JSYF char(2) ;--结束月份 v_count0 number(3); --计数器 V_temp00 number(14,4); V_ZSR000 number(14,4); --全院总收入 V_QYYLSR number(14,4); --全院医疗收入 V_QYYPSR number(14,4); --全院药品收入 V_MZZE00 number(14,4); --门诊收入总额 V_MZYLSR number(14,4); --门诊医疗收入 V_MZYPSR number(14,4); --门诊药品收入 V_ZYZE00 number(14,4); --住院收入总额 V_ZYYLSR number(14,4); --住院医疗收入 V_ZYYPSR number(14,4); --住院药品收入 V_MZZYZJ number(14,4); --门诊中药+西成药制剂收入 V_ZYZYZJ number(14,4); --住院中药+西成药制剂收入 V_QYTJSR number(14,4); --体检收入 V_QYYWSR number(14,4); --全院医务性收入 ---2022.07.01 增加医务性收入指标 V_MZYWSR number(14,4); --门诊医务收入 V_ZYYWSR number(14,4); --住院医务收入 Vlgsftj char(1); --住院留观是否参与统计床位使用率 Vzycwsf char(1); --占用床位数算法1按在院人数算0按床位算(在院人数-请假+包床) Vtjlx00 varchar2(20); Vtjjg01 number; Vtjjg00 number; Vzxcgbz number; Vlsrq00 varchar2(10); as_YHMSG0 varchar2(200); as_SYSMSG varchar2(200); v_YZBXCY char(1); cursor c_zzb is select TJBH00,TJKSRQ,TJJG00 from ZH_ZTJZB0 where TJJG00<>0 and TJKSRQ=as_KSSJ order by TJKSRQ,tjbh00; cursor c_yzb is select TJBH00,TJYF00,TJJG00,FLAG00 from ZH_TJZB01 where TJJG00<>0 and TJYF00=substrb(as_KSSJ,1,6) order by TJYF00,tjbh00,flag00; begin --留观是否统计 select substrb(nvl(trim(upper(max(Value0))),'Y'),1,1) into Vlgsftj from XT_XTCS00 where name00='ZH_ZYLGSFTJ'; --占用床位数算法1按在院人数算0按床位算(在院人数-请假+包床) select substrb(nvl(trim(upper(max(Value0))),'0'),1,1) into Vzycwsf from XT_XTCS00 where name00='ZH_ZYCWSF'; --药占比 是否都改为西成药(剔除本院制剂)/总收入(剔除中草药以及本院制剂) select substrb(nvl(trim(upper(max(Value0))),'N'),1,1) into V_YZBXCY from XT_XTCS00 where name00='ZH_YZBXCY'; m_KSYF := substrb(as_KSSJ,5,2); m_JSYF := substrb(as_JSSJ,5,2); if as_CXSC = '1' then IF as_BZ <> '10' then delete from ZH_TJZB01 where TJYF00=as_NF||m_KSYF and flag00=as_BZ; delete from YZ_YYTBSJ where NF0000=as_NF and YF0000=as_MC; else delete from ZH_ZTJZB0 where TJKSRQ= as_KSSJ and TJJSRQ= as_JSSJ; END IF; else IF as_BZ <> '10' then select count(1) into v_count0 from ZH_TJZB01 where TJYF00=as_NF||m_KSYF and flag00=as_BZ; else select count(1) into v_count0 from ZH_ZTJZB0 where TJKSRQ= as_KSSJ and TJJSRQ= as_JSSJ; END IF; if v_count0 >0 then return; end if; end if; --生成周的数据 if as_BZ='10' then insert into ZH_ZTJZB0(TJKSRQ,TJJSRQ, TJBH00,TJJG00,TJMC00, CZRQ00,CZSJ00) select as_KSSJ,as_JSSJ,TJBH00,sum(TJJG00),TJMC00,to_char(sysdate,'yyyymmdd'),to_char(sysdate,'hh24:mi:ss') from ZH_TJZB00 where TJRQ00 between as_KSSJ and as_JSSJ and TJBH00 in ( '0001','0002','0003','0004','0007','0008','0009','0010','0012','0013','0014','0015','0016','0017','0018','0019','0020', '0021','0022','0023','0024','0025','0026','0027','0031','0032','0034','0035','0036','0037','0038','0039','0040', '0041','0043','0044','0047','0049','0050','0051','0052','0053','0054','0055','0060','0061','0062','0063','0064','0065','0066','0067','0068','0069', '0070','0071','0072','0073','0074','0077','0082','0083','0085','0088','0089','0091','0092') group by TJBH00,TJMC00; --非合计值指标 0005最大处方 0006最小处方 insert into ZH_ZTJZB0(TJKSRQ,TJJSRQ, TJBH00,TJJG00,TJMC00, CZRQ00,CZSJ00) select as_KSSJ,as_JSSJ,TJBH00,decode(TJBH00,'0005',max(TJJG00),'0006',min(TJJG00)),TJMC00,to_char(sysdate,'yyyymmdd'),to_char(sysdate,'hh24:mi:ss') from ZH_TJZB00 where TJRQ00 between as_KSSJ and as_JSSJ and TJBH00 in ('0005','0006') group by TJBH00,TJMC00; --期末值指标 0011预出院人数 0029住院预收款 0030未结算费用0033 在院病人数 insert into ZH_ZTJZB0(TJKSRQ,TJJSRQ, TJBH00,TJJG00,TJMC00, CZRQ00,CZSJ00) select as_KSSJ,as_JSSJ,TJBH00,TJJG00,TJMC00,to_char(sysdate,'yyyymmdd'),to_char(sysdate,'hh24:mi:ss') from ZH_TJZB00 where TJRQ00=as_JSSJ and TJBH00 in ('0011','0029','0030','0033'); select count(distinct ZYID00) into V_temp00 from BQ_YJYZ00 where QYRQ00<=as_JSSJ and as_KSSJ'Y' then select V_temp00-nvl(sum(round(nvl(TJJG00,0),0)),0) into V_temp00 --住院留观 from ZH_TJZB00 where TJRQ00 between as_KSSJ and as_JSSJ and TJBH00='0035'; end if; insert into ZH_ZTJZB0(TJKSRQ,TJJSRQ, TJBH00,TJJG00,TJMC00, CZRQ00,CZSJ00) values (as_KSSJ,as_JSSJ,'1018',V_temp00,'占用床数',to_char(sysdate,'yyyymmdd'),to_char(sysdate,'hh24:mi:ss')); select round(V_temp00/SF_XT_DIVIDE(sum(TJJG00)),4)*100 into V_temp00 from ZH_TJZB00 where TJRQ00 between as_KSSJ and as_JSSJ and TJBH00='0026'; insert into ZH_ZTJZB0(TJKSRQ,TJJSRQ, TJBH00,TJJG00,TJMC00, CZRQ00,CZSJ00) values (as_KSSJ,as_JSSJ,'1019',V_temp00,'病床使用率',to_char(sysdate,'yyyymmdd'),to_char(sysdate,'hh24:mi:ss')); select round(sum(decode(TJBH00,'0027',TJJG00,0))/greatest(nvl(sum(decode(TJBH00,'0008',TJJG00,0)),0),1),2) into V_temp00 from ZH_TJZB00 where TJRQ00 between as_KSSJ and as_JSSJ and TJBH00 in ('0027','0008'); insert into ZH_ZTJZB0(TJKSRQ,TJJSRQ, TJBH00,TJJG00,TJMC00, CZRQ00,CZSJ00) values (as_KSSJ,as_JSSJ,'1020',V_temp00,'出院平均住院日',to_char(sysdate,'yyyymmdd'),to_char(sysdate,'hh24:mi:ss')); insert into ZH_ZTJZB0(TJKSRQ,TJJSRQ, TJBH00,TJJG00,TJMC00, CZRQ00,CZSJ00) values (as_KSSJ,as_JSSJ,'0042',V_temp00,'出院平均住院日',to_char(sysdate,'yyyymmdd'),to_char(sysdate,'hh24:mi:ss')); insert into ZH_ZTJZB0(TJKSRQ,TJJSRQ, TJBH00,TJJG00,TJMC00, CZRQ00,CZSJ00) select as_KSSJ,as_JSSJ,'1021',sum(round(nvl(brzj00,0)-nvl(grzhzf,0)-nvl(tcjjzf,0),2)),'门诊收预交金',to_char(sysdate,'yyyymmdd'),to_char(sysdate,'hh24:mi:ss') from SF_YJJYE0 where BRID00=0 and CZRQ00 between as_KSSJ and as_JSSJ; insert into ZH_ZTJZB0(TJKSRQ,TJJSRQ, TJBH00,TJJG00,TJMC00, CZRQ00,CZSJ00) select as_KSSJ,as_JSSJ,'1022',round(nvl(max(bqjc00),0),2),'门诊预交金余额',to_char(sysdate,'yyyymmdd'),to_char(sysdate,'hh24:mi:ss') from sf_yjjye0 where brid00=0 and czrq00=as_JSSJ and rownum<2; insert into ZH_ZTJZB0(TJKSRQ,TJJSRQ, TJBH00,TJJG00,TJMC00, CZRQ00,CZSJ00) select as_KSSJ,as_JSSJ,'0057',round(nvl(max(bqjc00),0),2),'门诊预交金余额',to_char(sysdate,'yyyymmdd'),to_char(sysdate,'hh24:mi:ss') from sf_yjjye0 where brid00=0 and czrq00=as_JSSJ and rownum<2; --历史新高新低 for zb in c_zzb loop select nvl(min(TJJG00),0),nvl(max(TJJG00),0) into Vtjjg00,Vtjjg01 from ZH_ZTJZB0 where TJKSRQ0; if zb.TJJG00>Vtjjg01 and Vtjjg01<>0 then select TJKSRQ into Vlsrq00 from ZH_ZTJZB0 where TJBH00=zb.TJBH00 and TJJG00=Vtjjg01 and rownum=1; update ZH_ZTJZB0 set LSXGBZ='1',LSXGZ0=Vtjjg01,LSXGBL=round((zb.TJJG00-Vtjjg01)/Vtjjg01,4)*100,LSXGRQ=Vlsrq00 where TJBH00=zb.TJBH00 and TJKSRQ=zb.TJKSRQ; elsif zb.TJJG000 then select TJKSRQ into Vlsrq00 from ZH_ZTJZB0 where TJBH00=zb.TJBH00 and TJJG00=Vtjjg00 and rownum=1; update ZH_ZTJZB0 set LSXGBZ='2',LSXGZ0=Vtjjg00,LSXGBL=round((Vtjjg00-zb.TJJG00)/Vtjjg00,4)*100,LSXGRQ=Vlsrq00 where TJBH00=zb.TJBH00 and TJKSRQ=zb.TJKSRQ; end if; end loop; else insert into ZH_TJZB01(TJYF00,FLAG00,TJBH00,TJJG00,TJMC00,CZRQ00,CZSJ00) select substrb(as_KSSJ,1,6),as_BZ,TJBH00,sum(TJJG00),TJMC00,to_char(sysdate,'yyyymmdd'),to_char(sysdate,'hh24:mi:ss') from ZH_TJZB00 where TJRQ00 between as_KSSJ and as_JSSJ and TJBH00 in ( '0001','0002','0003','0004','0007','0008','0009','0010','0012','0013','0014','0015','0016','0017','0018','0019','0020', '0021','0022','0023','0024','0025','0026','0027','0031','0032','0034','0035','0036','0037','0038','0039','0040', '0041','0043','0044','0047','0049','0050','0051','0052','0053','0054','0055','0060','0061','0062','0063','0064','0065','0066','0067','0068','0069', '0070','0071','0072','0073','0074','0077','0082','0083','0085','0088','0089','0091','0092') group by TJBH00,TJMC00; --非合计值指标 0005最大处方 0006最小处方 insert into ZH_TJZB01(TJYF00,FLAG00,TJBH00,TJJG00,TJMC00,CZRQ00,CZSJ00) select substrb(as_KSSJ,1,6),as_BZ,TJBH00,decode(TJBH00,'0005',max(TJJG00),'0006',min(TJJG00)),TJMC00,to_char(sysdate,'yyyymmdd'),to_char(sysdate,'hh24:mi:ss') from ZH_TJZB00 where TJRQ00 between as_KSSJ and as_JSSJ and TJBH00 in ('0005','0006') group by TJBH00,TJMC00; --期末值指标 0011预出院人数 0029住院预收款 0030未结算费用 insert into ZH_TJZB01(TJYF00,FLAG00,TJBH00,TJJG00,TJMC00,CZRQ00,CZSJ00) select substrb(as_KSSJ,1,6),as_BZ,TJBH00,TJJG00,TJMC00,to_char(sysdate,'yyyymmdd'),to_char(sysdate,'hh24:mi:ss') from ZH_TJZB00 where TJRQ00=as_JSSJ and TJBH00 in ('0011','0029','0030','0033'); select count(distinct ZYID00) into V_temp00 from BQ_YJYZ00 where QYRQ00<=as_JSSJ and as_KSSJ'Y' then select V_temp00-nvl(sum(round(nvl(TJJG00,0),0)),0) into V_temp00 --住院留观 from ZH_TJZB00 where TJRQ00 between as_KSSJ and as_JSSJ and TJBH00='0035'; end if; insert into ZH_TJZB01(TJYF00,FLAG00,TJBH00,TJJG00,TJMC00,CZRQ00,CZSJ00) values (substrb(as_KSSJ,1,6),as_BZ,'1018',V_temp00,'占用床数',to_char(sysdate,'yyyymmdd'),to_char(sysdate,'hh24:mi:ss')); select round(V_temp00/SF_XT_DIVIDE(sum(TJJG00)),4)*100 into V_temp00 from ZH_TJZB00 where TJRQ00 between as_KSSJ and as_JSSJ and TJBH00='0026'; insert into ZH_TJZB01(TJYF00,FLAG00,TJBH00,TJJG00,TJMC00,CZRQ00,CZSJ00) values (substrb(as_KSSJ,1,6),as_BZ,'1019',V_temp00,'病床使用率',to_char(sysdate,'yyyymmdd'),to_char(sysdate,'hh24:mi:ss')); select round(sum(decode(TJBH00,'0027',TJJG00,0))/SF_XT_DIVIDE(sum(decode(TJBH00,'0008',TJJG00,0))),2) into V_temp00 from ZH_TJZB00 where TJRQ00 between as_KSSJ and as_JSSJ and TJBH00 in ('0027','0008'); insert into ZH_TJZB01(TJYF00,FLAG00,TJBH00,TJJG00,TJMC00,CZRQ00,CZSJ00) values (substrb(as_KSSJ,1,6),as_BZ,'1020',V_temp00,'出院平均住院日',to_char(sysdate,'yyyymmdd'),to_char(sysdate,'hh24:mi:ss')); insert into ZH_TJZB01(TJYF00,FLAG00,TJBH00,TJJG00,TJMC00,CZRQ00,CZSJ00) values (substrb(as_KSSJ,1,6),as_BZ,'0042',V_temp00,'出院平均住院日',to_char(sysdate,'yyyymmdd'),to_char(sysdate,'hh24:mi:ss')); insert into ZH_TJZB01(TJYF00,FLAG00,TJBH00,TJJG00,TJMC00,CZRQ00,CZSJ00) select substrb(as_KSSJ,1,6),as_BZ,'1021',sum(round(nvl(brzj00,0)-nvl(grzhzf,0)-nvl(tcjjzf,0),2)),'门诊收预交金',to_char(sysdate,'yyyymmdd'),to_char(sysdate,'hh24:mi:ss') from SF_YJJYE0 where BRID00=0 and CZRQ00 between as_KSSJ and as_JSSJ; insert into ZH_TJZB01(TJYF00,FLAG00,TJBH00,TJJG00,TJMC00,CZRQ00,CZSJ00) select substrb(as_KSSJ,1,6),as_BZ,'1022',round(nvl(max(bqjc00),0),2),'门诊预交金余额',to_char(sysdate,'yyyymmdd'),to_char(sysdate,'hh24:mi:ss') from sf_yjjye0 where brid00=0 and czrq00=as_JSSJ and rownum<2; insert into ZH_TJZB01(TJYF00,FLAG00,TJBH00,TJJG00,TJMC00,CZRQ00,CZSJ00) select substrb(as_KSSJ,1,6),as_BZ,'0057',round(nvl(max(bqjc00),0),2),'门诊预交金余额',to_char(sysdate,'yyyymmdd'),to_char(sysdate,'hh24:mi:ss') from sf_yjjye0 where brid00=0 and czrq00=as_JSSJ and rownum<2; --额外指标 '07' 出院患者人天费用 select nvl(sum(TJJG00),0) into V_temp00 from ZH_TJZB00 where TJRQ00 between as_KSSJ and as_JSSJ and TJBH00='0043'; select nvl(round(V_temp00/greatest(nvl(sum(TJJG00),0),1),2),0) into V_temp00 from ZH_TJZB00 where TJRQ00 between as_KSSJ and as_JSSJ and TJBH00='0027'; --select round(sum(decode(TJBH00,'0028',TJJG00,0))/sum(decode(TJBH00,'1020',TJJG00,0)),2) into V_temp00 -- from ZH_TJZB01 a where a.TJYF00=substrb(as_KSSJ,1,6) and a.FLAG00=as_BZ and TJBH00 in ('0028','1020'); insert into ZH_TJZB01(TJYF00,FLAG00,TJBH00,TJJG00,TJMC00,CZRQ00,CZSJ00) values (substrb(as_KSSJ,1,6),as_BZ,'07',V_temp00,'出院人天费用',to_char(sysdate,'yyyymmdd'),to_char(sysdate,'hh24:mi:ss')); --额外指标 '08' 出院药品比例 select nvl(round(sum(nvl(a.TJJG00,0)*nvl(b.TJJG00,0)),4),0) into V_temp00 from ZH_TJZB01 a,ZH_TJZB01 b where a.TJYF00=substrb(as_KSSJ,1,6) and a.FLAG00=as_BZ and a.TJBH00='0028' and b.TJYF00=substrb(as_KSSJ,1,6) and b.FLAG00=as_BZ and b.TJBH00='0008'; select round(nvl(sum(TJJG00),0)/SF_XT_DIVIDE(V_temp00),4)*100 into V_temp00 from ZH_TJZB01 a where TJYF00=substrb(as_KSSJ,1,6) and a.FLAG00=as_BZ and TJBH00 in ('0032'); insert into ZH_TJZB01(TJYF00,FLAG00,TJBH00,TJJG00,TJMC00,CZRQ00,CZSJ00) values (substrb(as_KSSJ,1,6),as_BZ,'08',V_temp00,'出院药品比例',to_char(sysdate,'yyyymmdd'),to_char(sysdate,'hh24:mi:ss')); --历史新高新低 for zb in c_yzb loop select nvl(min(TJJG00),0),nvl(max(TJJG00),0) into Vtjjg00,Vtjjg01 from ZH_TJZB01 where TJYF000 and FLAG00=zb.FLAG00; if zb.TJJG00>Vtjjg01 and Vtjjg01<>0 then select TJYF00 into Vlsrq00 from ZH_TJZB01 where TJBH00=zb.TJBH00 and TJJG00=Vtjjg01 and FLAG00=zb.FLAG00 and rownum=1; update ZH_TJZB01 set LSXGBZ='1',LSXGZ0=Vtjjg01,LSXGBL=round((zb.TJJG00-Vtjjg01)/Vtjjg01,4)*100,LSXGRQ=Vlsrq00 where TJBH00=zb.TJBH00 and TJYF00=zb.TJYF00 and FLAG00=zb.FLAG00; elsif zb.TJJG000 then select TJYF00 into Vlsrq00 from ZH_TJZB01 where TJBH00=zb.TJBH00 and TJJG00=Vtjjg00 and FLAG00=zb.FLAG00 and rownum=1; update ZH_TJZB01 set LSXGBZ='2',LSXGZ0=Vtjjg00,LSXGBL=round((Vtjjg00-zb.TJJG00)/Vtjjg00,4)*100,LSXGRQ=Vlsrq00 where TJBH00=zb.TJBH00 and TJYF00=zb.TJYF00 and FLAG00=zb.FLAG00; end if; end loop; end if; --生成同比数据 update ZH_TJZB01 a set TBZZ00=(select decode(nvl(b.TJJG00,0),0,100.00,least(round((nvl(a.TJJG00,0)-nvl(b.TJJG00,0))*100/b.TJJG00,2),10000.00)) from ZH_TJZB01 b where TJYF00=(as_NF-1)||m_KSYF and a.TJBH00=b.TJBH00 and a.FLAG00=b.FLAG00) where TJYF00=substrb(as_KSSJ,1,6) and a.FLAG00=as_BZ; --插入YZ_YYTBSJ表中 IF as_BZ <> '10' then select sum(tjjg00) into m_mzrc from ZH_TJZB01 a where TJYF00=substrb(as_KSSJ,1,6) and a.FLAG00=as_BZ and TJBH00='0001'; select sum(tjjg00) into m_qqrc from ZH_TJZB01 a where TJYF00=(as_NF-1)||m_KSYF and a.FLAG00=as_BZ and TJBH00='0001'; select least((m_mzrc-m_qqrc)/decode(nvl(m_qqrc,0),0,1,m_qqrc)*100,10000.00) into m_mztb from dual; select sum(tjjg00)/m_mzrc into m_rjfy from ZH_TJZB01 a where TJYF00=substrb(as_KSSJ,1,6) and a.FLAG00=as_BZ and TJBH00='0016'; select sum(tjjg00)/m_qqrc into m_qqfy from ZH_TJZB01 a where TJYF00=(as_NF-1)||m_KSYF and a.FLAG00=as_BZ and TJBH00='0016'; select least((m_rjfy-m_qqfy)/decode(nvl(m_qqfy,0),0,1,m_qqfy)*100,10000.00) into m_rjtb from dual; select sum(tjjg00)/m_mzrc into m_ypfy from ZH_TJZB01 a where TJYF00=substrb(as_KSSJ,1,6) and a.FLAG00=as_BZ and TJBH00='0017'; select sum(tjjg00)/m_qqrc into m_qqyp from ZH_TJZB01 a where TJYF00=(as_NF-1)||m_KSYF and a.FLAG00=as_BZ and TJBH00='0017'; select least((m_ypfy-m_qqyp)/decode(nvl(m_qqrc,0),0,1,m_qqyp)*100,10000.00) into m_yptb from dual; select m_ypfy/decode(nvl(m_rjfy,0),0,1,m_rjfy)*100 into m_ypbl from dual; select m_qqyp/decode(nvl(m_qqfy,0),0,1,m_qqfy)*100 into m_qqbl from dual; select least((m_ypbl-m_qqbl)/decode(nvl(m_qqbl,0),0,1,m_qqbl)*100,10000.00) into m_bltb from dual; select sum(tjjg00) into z_zyrc from ZH_TJZB01 a where TJYF00=substrb(as_KSSJ,1,6) and a.FLAG00=as_BZ and TJBH00='0008'; select sum(tjjg00) into z_qqrc from ZH_TJZB01 a where TJYF00=(as_NF-1)||m_KSYF and a.FLAG00=as_BZ and TJBH00='0008'; select least((z_zyrc-z_qqrc)/decode(nvl(z_qqrc,0),0,1,z_qqrc)*100,10000.00) into z_zytb from dual; select sum(tjjg00) into z_rjfy from ZH_TJZB01 a where TJYF00=substrb(as_KSSJ,1,6) and a.FLAG00=as_BZ and TJBH00='0028'; select sum(tjjg00) into z_qqfy from ZH_TJZB01 a where TJYF00=(as_NF-1)||m_KSYF and a.FLAG00=as_BZ and TJBH00='0028'; select least((z_rjfy-z_qqfy)/decode(nvl(z_qqfy,0),0,1,z_qqfy)*100,10000.00) into z_rjtb from dual; select sum(tjjg00) into z_rtfy from ZH_TJZB01 a where TJYF00=substrb(as_KSSJ,1,6) and a.FLAG00=as_BZ and TJBH00='07'; select sum(tjjg00) into z_qqrt from ZH_TJZB01 a where TJYF00=(as_NF-1)||m_KSYF and a.FLAG00=as_BZ and TJBH00='07'; select least((z_rtfy-z_qqrt)/decode(nvl(z_qqrt,0),0,1,z_qqrt)*100,10000.00) into z_rttb from dual; select sum(tjjg00) into z_ypbl from ZH_TJZB01 a where TJYF00=substrb(as_KSSJ,1,6) and a.FLAG00=as_BZ and TJBH00='08'; select sum(tjjg00) into z_qqbl from ZH_TJZB01 a where TJYF00=(as_NF-1)||m_KSYF and a.FLAG00=as_BZ and TJBH00='08'; select least((z_ypbl-z_qqbl)/decode(nvl(z_qqbl,0),0,1,z_qqbl)*100,10000.00) into z_bltb from dual; insert into YZ_YYTBSJ(BH0000,NF0000,YF0000,MJZRC0,MZRCTB,MZRJFY,MZRJTB,MZYPFY,MZYPTB, MZYPBL,MZBLTB,ZYRC00,ZYRCTB,ZYRJFY,ZYRJTB,ZYRTFY,ZYRTTB,ZYYPBL,ZYBLTB) values(as_BH,as_NF,as_MC,m_mzrc,m_mztb,m_rjfy,m_rjtb,m_ypfy,m_yptb, m_ypbl,m_bltb,z_zyrc,z_zytb,z_rjfy,z_rjtb,z_rtfy,z_rttb,z_ypbl,z_bltb); END IF; select decode(as_BZ,'0','月报','1','季度报','2','半年报','3','年报','10','周报') into Vtjlx00 from dual; --周报短信 SP_YJ_DXTZ00(to_number(as_KSSJ),'HIS'||Vtjlx00,'',0,0,'N',Vzxcgbz,as_YHMSG0,as_SYSMSG); commit; exception when others then -- as_YHMSG0:='出错原因不详,请记录此信息并和系统管理员联系!'; rollback; end;