create or replace procedure SP_ZH_GZLTJ0 ( as_KSRQ00 in char, --开始日期 as_KSSJ00 in char, --开始时间 as_JSRQ00 in char, --结束日期 as_JSSJ00 in char, --结束时间 as_TJLB00 in char, --统计核算类别 '0' 发票项目 '1' 一级核算项目统计 '2'二级核算项目统计 as_YSLB00 in char, --统计类别 '0' 按开单医生 '1'按执行医生 as_YSBH00 in char, --医生编号(-1为全部) as_MZZY00 in char, --门诊住院标志 '0' 全部 '1' 门诊 '2' 住院 as_TJID00 in number, --统计条件ID ZH_YSZTJB.TJID00 -1表示全部,不按医生组 ad_ID0000 out number, --统计报表对应ID as_YHMSG0 out varchar, --存储过程提示的错误信息 as_SYSMSG out varchar --系统提示的错误信息 ) as -- MODIFICATION HISTORY -- Person Date Comments -- daihq 2013.03.29 create by ZHCX-20130325-001 -- qks 2016.09.27 相关存储过程修改归档:去掉表SF_BRFY00、ZY_BRFY00关联 for YZCX9-20160927-001 ls_YSBH00 ZY_FYMX00.KDYS00%type; ls_bmbh00 bm_yysftj.bmbh00%type; ls_HJJE00 ZY_FYMX00.HJJE00%type; ls_HSXMBH BM_YYHSXM.BH0000%type; VCounter number(12); ls_BHSX00 char(2); ls_BHSX01 number(12); ls_YSZBH0 ZH_YSZTJB.YSZBH0%type; --门诊发票项目统计(2017.10.30增加药品统计) cursor CUR_MZ_FYMX00_FPXM00 is select BH0000,YSBH00,sum(HJJE00) from ( select F.BH0000,decode(as_YSLB00,'0',KDYS00,ZXYS00) YSBH00,sum(A.HJJE00) hjje00 from SF_FYMX00 A,BM_YYSFXM E,BM_FPXM00 F,BM_YGBM00 H where A.XMBH00 = E.SFXMID and ((as_YSLB00='0' and KDYS00=H.YGBH00) or (as_YSLB00='1' and ZXYS00=H.YGBH00)) and E.MZFPID = F.FPXMID and a.CZRQ00 >= as_KSRQ00 and a.CZRQ00 <= as_JSRQ00 and a.CZRQ00||a.CZSJ00 >= as_KSRQ00||as_KSSJ00 and a.CZRQ00||a.CZSJ00 <= as_JSRQ00||as_JSSJ00 and ((as_YSLB00='0' and KDYS00=as_YSBH00) or (as_YSLB00='1' and ZXYS00=as_YSBH00) or as_YSBH00 = '-1') and ((as_TJID00 = -1) or ( as_TJID00<>-1 and instr(ls_YSZBH0,H.YNGZFZ)>0 )) group by F.BH0000,decode(as_YSLB00,'0',KDYS00,ZXYS00) union all select F.BH0000,decode(as_YSLB00,'0',KDYS00,ZXYS00) YSBH00,sum(A.HJJE00) hjje00 from SF_FYMX00 A,bm_yd0000 E,BM_FPXM00 F,BM_YGBM00 H where A.XMBH00 = E.ypnm00 and ((as_YSLB00='0' and KDYS00=H.YGBH00) or (as_YSLB00='1' and ZXYS00=H.YGBH00)) and E.MZFPID = F.FPXMID and a.CZRQ00 >= as_KSRQ00 and a.CZRQ00 <= as_JSRQ00 and a.CZRQ00||a.CZSJ00 >= as_KSRQ00||as_KSSJ00 and a.CZRQ00||a.CZSJ00 <= as_JSRQ00||as_JSSJ00 and ((as_YSLB00='0' and KDYS00=as_YSBH00) or (as_YSLB00='1' and ZXYS00=as_YSBH00) or as_YSBH00 = '-1') and ((as_TJID00 = -1) or ( as_TJID00<>-1 and instr(ls_YSZBH0,H.YNGZFZ)>0 )) group by F.BH0000,decode(as_YSLB00,'0',KDYS00,ZXYS00)) group by BH0000,YSBH00 order by BH0000; --门诊一级核算项目统计(2017.10.30增加药品统计) cursor CUR_MZ_FYMX00_YJHSXM is select YJHSBH,YSBH00,sum(HJJE00) from( select F.YJHSBH,decode(as_YSLB00,'0',KDYS00,ZXYS00) YSBH00,sum(A.HJJE00) hjje00 from SF_FYMX00 A,BM_YYSFXM E,VW_BM_YJHSXM F,BM_YGBM00 H where A.XMBH00 = E.SFXMID and ((as_YSLB00='0' and KDYS00=H.YGBH00) or (as_YSLB00='1' and ZXYS00=H.YGBH00)) and E.HSXMID = F.HSXMID and a.CZRQ00 >= as_KSRQ00 and a.CZRQ00 <= as_JSRQ00 and a.CZRQ00||a.CZSJ00 >= as_KSRQ00||as_KSSJ00 and a.CZRQ00||a.CZSJ00 <= as_JSRQ00||as_JSSJ00 and ((as_YSLB00='0' and KDYS00=as_YSBH00) or (as_YSLB00='1' and ZXYS00=as_YSBH00) or as_YSBH00 = '-1') and ((as_TJID00 = -1) or ( as_TJID00<>-1 and instr(ls_YSZBH0,H.YNGZFZ)>0 )) group by F.YJHSBH,decode(as_YSLB00,'0',KDYS00,ZXYS00) union all select F.YJHSBH,decode(as_YSLB00,'0',KDYS00,ZXYS00) YSBH00,sum(A.HJJE00) hjje00 from SF_FYMX00 A,BM_yd0000 E,VW_BM_YJHSXM F,BM_YGBM00 H where A.XMBH00 = E.ypnm00 and ((as_YSLB00='0' and KDYS00=H.YGBH00) or (as_YSLB00='1' and ZXYS00=H.YGBH00)) and E.HSXMID = F.HSXMID and a.CZRQ00 >= as_KSRQ00 and a.CZRQ00 <= as_JSRQ00 and a.CZRQ00||a.CZSJ00 >= as_KSRQ00||as_KSSJ00 and a.CZRQ00||a.CZSJ00 <= as_JSRQ00||as_JSSJ00 and ((as_YSLB00='0' and KDYS00=as_YSBH00) or (as_YSLB00='1' and ZXYS00=as_YSBH00) or as_YSBH00 = '-1') and ((as_TJID00 = -1) or ( as_TJID00<>-1 and instr(ls_YSZBH0,H.YNGZFZ)>0 )) group by F.YJHSBH,decode(as_YSLB00,'0',KDYS00,ZXYS00)) group by YJHSBH,YSBH00 order by YJHSBH ; --门诊二级核算项目统计(2017.10.30增加药品统计) cursor CUR_MZ_FYMX00_EJHSXM is select EJHSBH,YSBH00,sum(HJJE00) from( select F.EJHSBH,decode(as_YSLB00,'0',KDYS00,ZXYS00) YSBH00,sum(A.HJJE00) HJJE00 from SF_FYMX00 A,BM_YYSFXM E,VW_BM_EJHSXM F,BM_YGBM00 H where A.XMBH00 = E.SFXMID and ((as_YSLB00='0' and KDYS00=H.YGBH00) or (as_YSLB00='1' and ZXYS00=H.YGBH00)) and E.HSXMID = F.HSXMID and a.CZRQ00 >= as_KSRQ00 and a.CZRQ00 <= as_JSRQ00 and a.CZRQ00||a.CZSJ00 >= as_KSRQ00||as_KSSJ00 and a.CZRQ00||a.CZSJ00 <= as_JSRQ00||as_JSSJ00 and ((as_YSLB00='0' and KDYS00=as_YSBH00) or (as_YSLB00='1' and ZXYS00=as_YSBH00) or as_YSBH00 = '-1') and ((as_TJID00 = -1) or ( as_TJID00<>-1 and instr(ls_YSZBH0,H.YNGZFZ)>0 )) group by F.EJHSBH,decode(as_YSLB00,'0',KDYS00,ZXYS00) union all select F.EJHSBH,decode(as_YSLB00,'0',KDYS00,ZXYS00) YSBH00,sum(A.HJJE00) HJJE00 from sf_FYMX00 A,bm_yd0000 E,VW_BM_EJHSXM F,BM_YGBM00 H where A.XMBH00 = E.ypnm00 and ((as_YSLB00='0' and KDYS00=H.YGBH00) or (as_YSLB00='1' and ZXYS00=H.YGBH00)) and E.HSXMID = F.HSXMID and a.CZRQ00 >= as_KSRQ00 and a.CZRQ00 <= as_JSRQ00 and a.CZRQ00||a.CZSJ00 >= as_KSRQ00||as_KSSJ00 and a.CZRQ00||a.CZSJ00 <= as_JSRQ00||as_JSSJ00 and ((as_YSLB00='0' and KDYS00=as_YSBH00) or (as_YSLB00='1' and ZXYS00=as_YSBH00) or as_YSBH00 = '-1') and ((as_TJID00 = -1) or ( as_TJID00<>-1 and instr(ls_YSZBH0,H.YNGZFZ)>0 )) group by F.EJHSBH,decode(as_YSLB00,'0',KDYS00,ZXYS00) ) group by EJHSBH,YSBH00 order by EJHSBH ; --住院发票项目统计 (2017.10.30增加药品统计) cursor CUR_ZY_FYMX00_FPXM00 is select BH0000,YSBH00,sum(HJJE00) from ( select F.BH0000,decode(as_YSLB00,'0',KDYS00,ZXYS00) YSBH00,sum(A.HJJE00) hjje00 from zy_FYMX00 A,BM_YYSFXM E,BM_FPXM00 F,BM_YGBM00 H where A.XMBH00 = E.SFXMID and ((as_YSLB00='0' and KDYS00=H.YGBH00) or (as_YSLB00='1' and ZXYS00=H.YGBH00)) and E.MZFPID = F.FPXMID and a.CZRQ00 >= as_KSRQ00 and a.CZRQ00 <= as_JSRQ00 and a.CZRQ00||a.CZSJ00 >= as_KSRQ00||as_KSSJ00 and a.CZRQ00||a.CZSJ00 <= as_JSRQ00||as_JSSJ00 and ((as_YSLB00='0' and KDYS00=as_YSBH00) or (as_YSLB00='1' and ZXYS00=as_YSBH00) or as_YSBH00 = '-1') and ((as_TJID00 = -1) or ( as_TJID00<>-1 and instr(ls_YSZBH0,H.YNGZFZ)>0 )) group by F.BH0000,decode(as_YSLB00,'0',KDYS00,ZXYS00) union all select F.BH0000,decode(as_YSLB00,'0',KDYS00,ZXYS00) YSBH00,sum(A.HJJE00) hjje00 from zy_FYMX00 A,bm_yd0000 E,BM_FPXM00 F,BM_YGBM00 H where A.XMBH00 = E.ypnm00 and ((as_YSLB00='0' and KDYS00=H.YGBH00) or (as_YSLB00='1' and ZXYS00=H.YGBH00)) and E.MZFPID = F.FPXMID and a.CZRQ00 >= as_KSRQ00 and a.CZRQ00 <= as_JSRQ00 and a.CZRQ00||a.CZSJ00 >= as_KSRQ00||as_KSSJ00 and a.CZRQ00||a.CZSJ00 <= as_JSRQ00||as_JSSJ00 and ((as_YSLB00='0' and KDYS00=as_YSBH00) or (as_YSLB00='1' and ZXYS00=as_YSBH00) or as_YSBH00 = '-1') and ((as_TJID00 = -1) or ( as_TJID00<>-1 and instr(ls_YSZBH0,H.YNGZFZ)>0 )) group by F.BH0000,decode(as_YSLB00,'0',KDYS00,ZXYS00)) group by BH0000,YSBH00 order by BH0000; -- 住院一级核算项目统计(2017.10.30增加药品统计) cursor CUR_ZY_FYMX00_YJHSXM is select YJHSBH,YSBH00,sum(HJJE00) from( select F.YJHSBH,decode(as_YSLB00,'0',KDYS00,ZXYS00) YSBH00,sum(A.HJJE00) hjje00 from ZY_FYMX00 A,BM_YYSFXM E,VW_BM_YJHSXM F,BM_YGBM00 H where A.XMBH00 = E.SFXMID and ((as_YSLB00='0' and KDYS00=H.YGBH00) or (as_YSLB00='1' and ZXYS00=H.YGBH00)) and E.HSXMID = F.HSXMID and a.CZRQ00 >= as_KSRQ00 and a.CZRQ00 <= as_JSRQ00 and a.CZRQ00||a.CZSJ00 >= as_KSRQ00||as_KSSJ00 and a.CZRQ00||a.CZSJ00 <= as_JSRQ00||as_JSSJ00 and ((as_YSLB00='0' and KDYS00=as_YSBH00) or (as_YSLB00='1' and ZXYS00=as_YSBH00) or as_YSBH00 = '-1') and ((as_TJID00 = -1) or ( as_TJID00<>-1 and instr(ls_YSZBH0,H.YNGZFZ)>0 )) group by F.YJHSBH,decode(as_YSLB00,'0',KDYS00,ZXYS00) union all select F.YJHSBH,decode(as_YSLB00,'0',KDYS00,ZXYS00) YSBH00,sum(A.HJJE00) hjje00 from ZY_FYMX00 A,BM_yd0000 E,VW_BM_YJHSXM F,BM_YGBM00 H where A.XMBH00 = E.ypnm00 and ((as_YSLB00='0' and KDYS00=H.YGBH00) or (as_YSLB00='1' and ZXYS00=H.YGBH00)) and E.HSXMID = F.HSXMID and a.CZRQ00 >= as_KSRQ00 and a.CZRQ00 <= as_JSRQ00 and a.CZRQ00||a.CZSJ00 >= as_KSRQ00||as_KSSJ00 and a.CZRQ00||a.CZSJ00 <= as_JSRQ00||as_JSSJ00 and ((as_YSLB00='0' and KDYS00=as_YSBH00) or (as_YSLB00='1' and ZXYS00=as_YSBH00) or as_YSBH00 = '-1') and ((as_TJID00 = -1) or ( as_TJID00<>-1 and instr(ls_YSZBH0,H.YNGZFZ)>0 )) group by F.YJHSBH,decode(as_YSLB00,'0',KDYS00,ZXYS00)) group by YJHSBH,YSBH00 order by YJHSBH ; -- 住院二级核算项目统计(2017.10.30增加药品统计) cursor CUR_ZY_FYMX00_EJHSXM is select EJHSBH,YSBH00,sum(HJJE00) from( select F.EJHSBH,decode(as_YSLB00,'0',KDYS00,ZXYS00) YSBH00,sum(A.HJJE00) HJJE00 from ZY_FYMX00 A,BM_YYSFXM E,VW_BM_EJHSXM F,BM_YGBM00 H where A.XMBH00 = E.SFXMID and ((as_YSLB00='0' and KDYS00=H.YGBH00) or (as_YSLB00='1' and ZXYS00=H.YGBH00)) and E.HSXMID = F.HSXMID and a.CZRQ00 >= as_KSRQ00 and a.CZRQ00 <= as_JSRQ00 and a.CZRQ00||a.CZSJ00 >= as_KSRQ00||as_KSSJ00 and a.CZRQ00||a.CZSJ00 <= as_JSRQ00||as_JSSJ00 and ((as_YSLB00='0' and KDYS00=as_YSBH00) or (as_YSLB00='1' and ZXYS00=as_YSBH00) or as_YSBH00 = '-1') and ((as_TJID00 = -1) or ( as_TJID00<>-1 and instr(ls_YSZBH0,H.YNGZFZ)>0 )) group by F.EJHSBH,decode(as_YSLB00,'0',KDYS00,ZXYS00) union all select F.EJHSBH,decode(as_YSLB00,'0',KDYS00,ZXYS00) YSBH00,sum(A.HJJE00) HJJE00 from ZY_FYMX00 A,BM_yd0000 E,VW_BM_EJHSXM F,BM_YGBM00 H where A.XMBH00 = E.YPNM00 and ((as_YSLB00='0' and KDYS00=H.YGBH00) or (as_YSLB00='1' and ZXYS00=H.YGBH00)) and E.HSXMID = F.HSXMID and a.CZRQ00 >= as_KSRQ00 and a.CZRQ00 <= as_JSRQ00 and a.CZRQ00||a.CZSJ00 >= as_KSRQ00||as_KSSJ00 and a.CZRQ00||a.CZSJ00 <= as_JSRQ00||as_JSSJ00 and ((as_YSLB00='0' and KDYS00=as_YSBH00) or (as_YSLB00='1' and ZXYS00=as_YSBH00) or as_YSBH00 = '-1') and ((as_TJID00 = -1) or ( as_TJID00<>-1 and instr(ls_YSZBH0,H.YNGZFZ)>0 )) group by F.EJHSBH,decode(as_YSLB00,'0',KDYS00,ZXYS00) ) group by EJHSBH,YSBH00 order by EJHSBH ; --全院收费项目统计(2017.10.30增加药品统计) cursor CUR_QY_FYMX00_FPXM00 is select BH0000,YSBH00,sum(HJJE00) from( select F.BH0000,decode(as_YSLB00,'0',KDYS00,ZXYS00) YSBH00,sum(A.HJJE00) HJJE00 from SF_FYMX00 A,BM_YYSFXM E,BM_FPXM00 F,BM_YGBM00 H where A.XMBH00 = E.SFXMID and ((as_YSLB00='0' and KDYS00=H.YGBH00) or (as_YSLB00='1' and ZXYS00=H.YGBH00)) and E.MZFPID = F.FPXMID and a.CZRQ00 >= as_KSRQ00 and a.CZRQ00 <= as_JSRQ00 and a.CZRQ00||a.CZSJ00 >= as_KSRQ00||as_KSSJ00 and a.CZRQ00||a.CZSJ00 <= as_JSRQ00||as_JSSJ00 and ((as_YSLB00='0' and KDYS00=as_YSBH00) or (as_YSLB00='1' and ZXYS00=as_YSBH00) or as_YSBH00 = '-1') and ((as_TJID00 = -1) or ( as_TJID00<>-1 and instr(ls_YSZBH0,H.YNGZFZ)>0 )) group by F.BH0000,decode(as_YSLB00,'0',KDYS00,ZXYS00) union all select F.BH0000,decode(as_YSLB00,'0',KDYS00,ZXYS00) YSBH00,sum(A.HJJE00) hjje00 from SF_FYMX00 A,bm_yd0000 E,BM_FPXM00 F,BM_YGBM00 H where A.XMBH00 = E.ypnm00 and ((as_YSLB00='0' and KDYS00=H.YGBH00) or (as_YSLB00='1' and ZXYS00=H.YGBH00)) and E.MZFPID = F.FPXMID and a.CZRQ00 >= as_KSRQ00 and a.CZRQ00 <= as_JSRQ00 and a.CZRQ00||a.CZSJ00 >= as_KSRQ00||as_KSSJ00 and a.CZRQ00||a.CZSJ00 <= as_JSRQ00||as_JSSJ00 and ((as_YSLB00='0' and KDYS00=as_YSBH00) or (as_YSLB00='1' and ZXYS00=as_YSBH00) or as_YSBH00 = '-1') and ((as_TJID00 = -1) or ( as_TJID00<>-1 and instr(ls_YSZBH0,H.YNGZFZ)>0 )) group by F.BH0000,decode(as_YSLB00,'0',KDYS00,ZXYS00) union all select F.BH0000,decode(as_YSLB00,'0',KDYS00,ZXYS00) YSBH00,sum(A.HJJE00) HJJE00 from ZY_FYMX00 A,BM_YYSFXM E,BM_FPXM00 F,BM_YGBM00 H where A.XMBH00 = E.SFXMID and ((as_YSLB00='0' and KDYS00=H.YGBH00) or (as_YSLB00='1' and ZXYS00=H.YGBH00)) and E.ZYFPID = F.FPXMID and a.CZRQ00 >= as_KSRQ00 and a.CZRQ00 <= as_JSRQ00 and a.CZRQ00||a.CZSJ00 >= as_KSRQ00||as_KSSJ00 and a.CZRQ00||a.CZSJ00 <= as_JSRQ00||as_JSSJ00 and ((as_YSLB00='0' and KDYS00=as_YSBH00) or (as_YSLB00='1' and ZXYS00=as_YSBH00) or as_YSBH00 = '-1') and ((as_TJID00 = -1) or ( as_TJID00<>-1 and instr(ls_YSZBH0,H.YNGZFZ)>0 )) group by F.BH0000,decode(as_YSLB00,'0',KDYS00,ZXYS00) union all select F.BH0000,decode(as_YSLB00,'0',KDYS00,ZXYS00) YSBH00,sum(A.HJJE00) hjje00 from zy_FYMX00 A,bm_yd0000 E,BM_FPXM00 F,BM_YGBM00 H where A.XMBH00 = E.ypnm00 and ((as_YSLB00='0' and KDYS00=H.YGBH00) or (as_YSLB00='1' and ZXYS00=H.YGBH00)) and E.MZFPID = F.FPXMID and a.CZRQ00 >= as_KSRQ00 and a.CZRQ00 <= as_JSRQ00 and a.CZRQ00||a.CZSJ00 >= as_KSRQ00||as_KSSJ00 and a.CZRQ00||a.CZSJ00 <= as_JSRQ00||as_JSSJ00 and ((as_YSLB00='0' and KDYS00=as_YSBH00) or (as_YSLB00='1' and ZXYS00=as_YSBH00) or as_YSBH00 = '-1') and ((as_TJID00 = -1) or ( as_TJID00<>-1 and instr(ls_YSZBH0,H.YNGZFZ)>0 )) group by F.BH0000,decode(as_YSLB00,'0',KDYS00,ZXYS00) ) group by BH0000,YSBH00 order by BH0000 ; --全院一级核算项目统计(2017.10.30增加药品统计) cursor CUR_QY_FYMX00_YJHSXM is select YJHSBH,YSBH00,sum(HJJE00) from( select F.YJHSBH,decode(as_YSLB00,'0',KDYS00,ZXYS00) YSBH00,sum(A.HJJE00) HJJE00 from SF_FYMX00 A,BM_YYSFXM E,VW_BM_YJHSXM F,BM_YGBM00 H where A.XMBH00 = E.SFXMID and ((as_YSLB00='0' and KDYS00=H.YGBH00) or (as_YSLB00='1' and ZXYS00=H.YGBH00)) and E.HSXMID = F.HSXMID and a.CZRQ00 >= as_KSRQ00 and a.CZRQ00 <= as_JSRQ00 and a.CZRQ00||a.CZSJ00 >= as_KSRQ00||as_KSSJ00 and a.CZRQ00||a.CZSJ00 <= as_JSRQ00||as_JSSJ00 and ((as_YSLB00='0' and KDYS00=as_YSBH00) or (as_YSLB00='1' and ZXYS00=as_YSBH00) or as_YSBH00 = '-1') and ((as_TJID00 = -1) or ( as_TJID00<>-1 and instr(ls_YSZBH0,H.YNGZFZ)>0 )) group by F.YJHSBH,decode(as_YSLB00,'0',KDYS00,ZXYS00) union all select F.YJHSBH,decode(as_YSLB00,'0',KDYS00,ZXYS00) YSBH00,sum(A.HJJE00) hjje00 from sf_FYMX00 A,BM_yd0000 E,VW_BM_YJHSXM F,BM_YGBM00 H where A.XMBH00 = E.ypnm00 and ((as_YSLB00='0' and KDYS00=H.YGBH00) or (as_YSLB00='1' and ZXYS00=H.YGBH00)) and E.HSXMID = F.HSXMID and a.CZRQ00 >= as_KSRQ00 and a.CZRQ00 <= as_JSRQ00 and a.CZRQ00||a.CZSJ00 >= as_KSRQ00||as_KSSJ00 and a.CZRQ00||a.CZSJ00 <= as_JSRQ00||as_JSSJ00 and ((as_YSLB00='0' and KDYS00=as_YSBH00) or (as_YSLB00='1' and ZXYS00=as_YSBH00) or as_YSBH00 = '-1') and ((as_TJID00 = -1) or ( as_TJID00<>-1 and instr(ls_YSZBH0,H.YNGZFZ)>0 )) group by F.YJHSBH,decode(as_YSLB00,'0',KDYS00,ZXYS00) union all select F.YJHSBH,decode(as_YSLB00,'0',KDYS00,ZXYS00) YSBH00,sum(A.HJJE00) HJJE00 from ZY_FYMX00 A,BM_YYSFXM E,VW_BM_YJHSXM F,BM_YGBM00 H where A.XMBH00 = E.SFXMID and ((as_YSLB00='0' and KDYS00=H.YGBH00) or (as_YSLB00='1' and ZXYS00=H.YGBH00)) and E.HSXMID = F.HSXMID and a.CZRQ00 >= as_KSRQ00 and a.CZRQ00 <= as_JSRQ00 and a.CZRQ00||a.CZSJ00 >= as_KSRQ00||as_KSSJ00 and a.CZRQ00||a.CZSJ00 <= as_JSRQ00||as_JSSJ00 and ((as_YSLB00='0' and KDYS00=as_YSBH00) or (as_YSLB00='1' and ZXYS00=as_YSBH00) or as_YSBH00 = '-1') and ((as_TJID00 = -1) or ( as_TJID00<>-1 and instr(ls_YSZBH0,H.YNGZFZ)>0 )) group by F.YJHSBH,decode(as_YSLB00,'0',KDYS00,ZXYS00) union all select F.YJHSBH,decode(as_YSLB00,'0',KDYS00,ZXYS00) YSBH00,sum(A.HJJE00) hjje00 from ZY_FYMX00 A,BM_yd0000 E,VW_BM_YJHSXM F,BM_YGBM00 H where A.XMBH00 = E.ypnm00 and ((as_YSLB00='0' and KDYS00=H.YGBH00) or (as_YSLB00='1' and ZXYS00=H.YGBH00)) and E.HSXMID = F.HSXMID and a.CZRQ00 >= as_KSRQ00 and a.CZRQ00 <= as_JSRQ00 and a.CZRQ00||a.CZSJ00 >= as_KSRQ00||as_KSSJ00 and a.CZRQ00||a.CZSJ00 <= as_JSRQ00||as_JSSJ00 and ((as_YSLB00='0' and KDYS00=as_YSBH00) or (as_YSLB00='1' and ZXYS00=as_YSBH00) or as_YSBH00 = '-1') and ((as_TJID00 = -1) or ( as_TJID00<>-1 and instr(ls_YSZBH0,H.YNGZFZ)>0 )) group by F.YJHSBH,decode(as_YSLB00,'0',KDYS00,ZXYS00) ) group by YJHSBH,YSBH00 order by YJHSBH ; --全院二级核算项目统计(2017.10.30增加药品统计) cursor CUR_QY_FYMX00_EJHSXM is select EJHSBH,YSBH00,sum(HJJE00) from( select F.EJHSBH,decode(as_YSLB00,'0',KDYS00,ZXYS00) YSBH00,sum(A.HJJE00) HJJE00 from SF_FYMX00 A,BM_YYSFXM E,VW_BM_EJHSXM F,BM_YGBM00 H where A.XMBH00 = E.SFXMID and ((as_YSLB00='0' and KDYS00=H.YGBH00) or (as_YSLB00='1' and ZXYS00=H.YGBH00)) and E.HSXMID = F.HSXMID and a.CZRQ00 >= as_KSRQ00 and a.CZRQ00 <= as_JSRQ00 and a.CZRQ00||a.CZSJ00 >= as_KSRQ00||as_KSSJ00 and a.CZRQ00||a.CZSJ00 <= as_JSRQ00||as_JSSJ00 and ((as_YSLB00='0' and KDYS00=as_YSBH00) or (as_YSLB00='1' and ZXYS00=as_YSBH00) or as_YSBH00 = '-1') and ((as_TJID00 = -1) or ( as_TJID00<>-1 and instr(ls_YSZBH0,H.YNGZFZ)>0 )) group by F.EJHSBH,decode(as_YSLB00,'0',KDYS00,ZXYS00) union all select F.EJHSBH,decode(as_YSLB00,'0',KDYS00,ZXYS00) YSBH00,sum(A.HJJE00) HJJE00 from SF_FYMX00 A,BM_yd0000 E,VW_BM_EJHSXM F,BM_YGBM00 H where A.XMBH00 = E.YPNM00 and ((as_YSLB00='0' and KDYS00=H.YGBH00) or (as_YSLB00='1' and ZXYS00=H.YGBH00)) and E.HSXMID = F.HSXMID and a.CZRQ00 >= as_KSRQ00 and a.CZRQ00 <= as_JSRQ00 and a.CZRQ00||a.CZSJ00 >= as_KSRQ00||as_KSSJ00 and a.CZRQ00||a.CZSJ00 <= as_JSRQ00||as_JSSJ00 and ((as_YSLB00='0' and KDYS00=as_YSBH00) or (as_YSLB00='1' and ZXYS00=as_YSBH00) or as_YSBH00 = '-1') and ((as_TJID00 = -1) or ( as_TJID00<>-1 and instr(ls_YSZBH0,H.YNGZFZ)>0 )) group by F.EJHSBH,decode(as_YSLB00,'0',KDYS00,ZXYS00) union all select F.EJHSBH,decode(as_YSLB00,'0',KDYS00,ZXYS00) YSBH00,sum(A.HJJE00) HJJE00 from ZY_FYMX00 A,BM_YYSFXM E,VW_BM_EJHSXM F,BM_YGBM00 H where A.XMBH00 = E.SFXMID and ((as_YSLB00='0' and KDYS00=H.YGBH00) or (as_YSLB00='1' and ZXYS00=H.YGBH00)) and E.HSXMID = F.HSXMID and a.CZRQ00 >= as_KSRQ00 and a.CZRQ00 <= as_JSRQ00 and a.CZRQ00||a.CZSJ00 >= as_KSRQ00||as_KSSJ00 and a.CZRQ00||a.CZSJ00 <= as_JSRQ00||as_JSSJ00 and ((as_YSLB00='0' and KDYS00=as_YSBH00) or (as_YSLB00='1' and ZXYS00=as_YSBH00) or as_YSBH00 = '-1') and ((as_TJID00 = -1) or ( as_TJID00<>-1 and instr(ls_YSZBH0,H.YNGZFZ)>0 )) group by F.EJHSBH,decode(as_YSLB00,'0',KDYS00,ZXYS00) union all select F.EJHSBH,decode(as_YSLB00,'0',KDYS00,ZXYS00) YSBH00,sum(A.HJJE00) HJJE00 from ZY_FYMX00 A,BM_yd0000 E,VW_BM_EJHSXM F,BM_YGBM00 H where A.XMBH00 = E.YPNM00 and ((as_YSLB00='0' and KDYS00=H.YGBH00) or (as_YSLB00='1' and ZXYS00=H.YGBH00)) and E.HSXMID = F.HSXMID and a.CZRQ00 >= as_KSRQ00 and a.CZRQ00 <= as_JSRQ00 and a.CZRQ00||a.CZSJ00 >= as_KSRQ00||as_KSSJ00 and a.CZRQ00||a.CZSJ00 <= as_JSRQ00||as_JSSJ00 and ((as_YSLB00='0' and KDYS00=as_YSBH00) or (as_YSLB00='1' and ZXYS00=as_YSBH00) or as_YSBH00 = '-1') and ((as_TJID00 = -1) or ( as_TJID00<>-1 and instr(ls_YSZBH0,H.YNGZFZ)>0 )) group by F.EJHSBH,decode(as_YSLB00,'0',KDYS00,ZXYS00) ) group by EJHSBH,YSBH00 order by EJHSBH ; cursor CUR_BM_YYSFTJ is select bmbh00 from BM_YYSFTJ where ID0000 = ad_ID0000; begin if as_TJID00 <> -1 then select nvl(YSZBH0,' ') into ls_YSZBH0 from ZH_YSZTJB where TJID00=as_TJID00; else ls_YSZBH0 := ''; end if; select SQ_BM_GHKSTJ_ID0000.nextval into AD_ID0000 from dual; if AS_TJLB00='0' then insert into BM_GHKSTJ_KSDY00(ID0000,BH0000,GHKSBH,GHKSMC) select AD_ID0000,0,rownum,BH0000 from ( Select distinct BH0000 from BM_FPXM00 order by BH0000 ); elsif AS_TJLB00='1' then insert into BM_GHKSTJ_KSDY00(ID0000,BH0000,GHKSBH,GHKSMC) select AD_ID0000,0,rownum,YJHSBH from ( Select distinct YJHSBH from VW_BM_YJHSXM order by YJHSBH ); else insert into BM_GHKSTJ_KSDY00(ID0000,BH0000,GHKSBH,GHKSMC) select AD_ID0000,0,rownum,EJHSBH from ( Select distinct EJHSBH from VW_BM_EJHSXM order by EJHSBH ); end if ; if AS_TJLB00='0' then if as_MZZY00='0' then open CUR_QY_FYMX00_FPXM00; elsif as_MZZY00='1' then open CUR_MZ_FYMX00_FPXM00; else open CUR_ZY_FYMX00_FPXM00; end if; elsif AS_TJLB00='1' then if as_MZZY00='0' then open CUR_QY_FYMX00_YJHSXM; elsif as_MZZY00='1' then open CUR_MZ_FYMX00_YJHSXM; else open CUR_ZY_FYMX00_YJHSXM; end if; else if as_MZZY00='0' then open CUR_QY_FYMX00_EJHSXM; elsif as_MZZY00='1' then open CUR_MZ_FYMX00_EJHSXM; else open CUR_ZY_FYMX00_EJHSXM; end if; end if ; loop if AS_TJLB00='0' then if as_MZZY00='0' then fetch CUR_QY_FYMX00_FPXM00 into ls_HSXMBH,ls_YSBH00,ls_HJJE00; exit when CUR_QY_FYMX00_FPXM00%notfound; elsif as_MZZY00='1' then fetch CUR_MZ_FYMX00_FPXM00 into ls_HSXMBH,ls_YSBH00,ls_HJJE00; exit when CUR_MZ_FYMX00_FPXM00%notfound; else fetch CUR_ZY_FYMX00_FPXM00 into ls_HSXMBH,ls_YSBH00,ls_HJJE00; exit when CUR_ZY_FYMX00_FPXM00%notfound; end if; elsif AS_TJLB00='1' then if as_MZZY00='0' then fetch CUR_QY_FYMX00_YJHSXM into ls_HSXMBH,ls_YSBH00,ls_HJJE00; exit when CUR_QY_FYMX00_YJHSXM%notfound; elsif as_MZZY00='1' then fetch CUR_MZ_FYMX00_YJHSXM into ls_HSXMBH,ls_YSBH00,ls_HJJE00; exit when CUR_MZ_FYMX00_YJHSXM%notfound; else fetch CUR_ZY_FYMX00_YJHSXM into ls_HSXMBH,ls_YSBH00,ls_HJJE00; exit when CUR_ZY_FYMX00_YJHSXM%notfound; end if; else if as_MZZY00='0' then fetch CUR_QY_FYMX00_EJHSXM into ls_HSXMBH,ls_YSBH00,ls_HJJE00; exit when CUR_QY_FYMX00_EJHSXM%notfound; elsif as_MZZY00='1' then fetch CUR_MZ_FYMX00_EJHSXM into ls_HSXMBH,ls_YSBH00,ls_HJJE00; exit when CUR_MZ_FYMX00_EJHSXM%notfound; else fetch CUR_ZY_FYMX00_EJHSXM into ls_HSXMBH,ls_YSBH00,ls_HJJE00; exit when CUR_ZY_FYMX00_EJHSXM%notfound; end if; end if ; if ls_HJJE00<>0 then select Count(1) into VCounter from BM_GHKSTJ_KSDY00 where ID0000=AD_ID0000 and trim(GHKSMC)=ls_HSXMBH; if VCounter>0 then select lpad(to_char(GHKSBH),2,'0') into ls_BHSX00 from BM_GHKSTJ_KSDY00 where ID0000=AD_ID0000 and GHKSMC=ls_HSXMBH; else ls_BHSX01:=ls_BHSX01+1; select lpad(to_char(ls_BHSX01),2,'0') into ls_BHSX00 from dual; insert into BM_GHKSTJ_KSDY00(ID0000,BH0000,GHKSBH,GHKSMC) values(AD_ID0000,0,ls_BHSX00,ls_HSXMBH); end if; if ls_BHSX00>'98' then AS_YHMSG0:='住院病区收入统计失败,请察看详细信息并与系统管理员联系!'; AS_SYSMSG:='所设置的核算项目超过98个'; rollback; return; end if; select COUNT(1)into VCounter from BM_YYSFTJ where ID0000=AD_ID0000 and BMBH00=ls_YSBH00; if VCounter>0 THEN SP_EXECUTE_SQL('update BM_YYSFTJ set SFXM'||ls_BHSX00||'= NVL(SFXM'||ls_BHSX00||',0)+'||to_char(ls_HJJE00)||',XMHJ00=NVL(XMHJ00,0)+'||to_char(ls_HJJE00)||' where BMBH00 = '||to_char(ls_YSBH00)||' and ID0000='||to_char(ad_ID0000)); else SP_EXECUTE_SQL('insert into BM_YYSFTJ(BMBH00,SFXM'||ls_BHSX00||',ID0000,XMHJ00) values('||to_char(ls_YSBH00)||','||to_char(ls_HJJE00)||','||to_char(AD_ID0000)||','||to_char(ls_HJJE00)||')'); end if; end if; end loop; if AS_TJLB00='0' then if as_MZZY00='0' then close CUR_QY_FYMX00_FPXM00; elsif as_MZZY00='1' then close CUR_MZ_FYMX00_FPXM00; else close CUR_ZY_FYMX00_FPXM00; end if; elsif AS_TJLB00='1' then if as_MZZY00='0' then close CUR_QY_FYMX00_YJHSXM; elsif as_MZZY00='1' then close CUR_MZ_FYMX00_YJHSXM; else close CUR_ZY_FYMX00_YJHSXM; end if; else if as_MZZY00='0' then close CUR_QY_FYMX00_EJHSXM; elsif as_MZZY00='1' then close CUR_MZ_FYMX00_EJHSXM; else close CUR_ZY_FYMX00_EJHSXM; end if; end if ; if as_YSBH00=-1 then delete BM_YYSFTJ where ID0000=AD_ID0000 and XMHJ00=0; insert into BM_YYSFTJ(ID0000,BMBH00,XMHJ00,SFXM01,SFXM02,SFXM03,SFXM04,SFXM05,SFXM06,SFXM07,SFXM08,SFXM09,SFXM10,SFXM11,SFXM12,SFXM13,SFXM14,SFXM15,SFXM16,SFXM17,SFXM18,SFXM19,SFXM20, SFXM21,SFXM22,SFXM23,SFXM24,SFXM25,SFXM26,SFXM27,SFXM28,SFXM29,SFXM30,SFXM31,SFXM32,SFXM33,SFXM34,SFXM35,SFXM36,SFXM37,SFXM38,SFXM39,SFXM40, SFXM41,SFXM42,SFXM43,SFXM44,SFXM45,SFXM46,SFXM47,SFXM48,SFXM49,SFXM50,SFXM51,SFXM52,SFXM53,SFXM54,SFXM55,SFXM56,SFXM57,SFXM58,SFXM59,SFXM60, SFXM61,SFXM62,SFXM63,SFXM64,SFXM65,SFXM66,SFXM67,SFXM68,SFXM69,SFXM70,SFXM71,SFXM72,SFXM73,SFXM74,SFXM75,SFXM76,SFXM77,SFXM78,SFXM79,SFXM80, SFXM81,SFXM82,SFXM83,SFXM84,SFXM85,SFXM86,SFXM87,SFXM88,SFXM89,SFXM90,SFXM91,SFXM92,SFXM93,SFXM94,SFXM95,SFXM96,SFXM97,SFXM98) select ad_ID0000,999999999,sum(XMHJ00),sum(SFXM01),sum(SFXM02),sum(SFXM03),sum(SFXM04),sum(SFXM05),sum(SFXM06),sum(SFXM07),sum(SFXM08),sum(SFXM09),sum(SFXM10),sum(SFXM11),sum(SFXM12),sum(SFXM13), sum(SFXM14),sum(SFXM15),sum(SFXM16),sum(SFXM17),sum(SFXM18),sum(SFXM19),sum(SFXM20),sum(SFXM21),sum(SFXM22),sum(SFXM23),sum(SFXM24),sum(SFXM25),sum(SFXM26),sum(SFXM27),sum(SFXM28), sum(SFXM29),sum(SFXM30),sum(SFXM31),sum(SFXM32),sum(SFXM33),sum(SFXM34),sum(SFXM35),sum(SFXM36),sum(SFXM37),sum(SFXM38),sum(SFXM39),sum(SFXM40),sum(SFXM41),sum(SFXM42),sum(SFXM43), sum(SFXM44),sum(SFXM45),sum(SFXM46),sum(SFXM47),sum(SFXM48),sum(SFXM49),sum(SFXM50),sum(SFXM51),sum(SFXM52),sum(SFXM53),sum(SFXM54),sum(SFXM55),sum(SFXM56),sum(SFXM57),sum(SFXM58), sum(SFXM59),sum(SFXM60),sum(SFXM61),sum(SFXM62),sum(SFXM63),sum(SFXM64),sum(SFXM65),sum(SFXM66),sum(SFXM67),sum(SFXM68),sum(SFXM69),sum(SFXM70),sum(SFXM71),sum(SFXM72),sum(SFXM73), sum(SFXM74),sum(SFXM75),sum(SFXM76),sum(SFXM77),sum(SFXM78),sum(SFXM79),sum(SFXM80),sum(SFXM81),sum(SFXM82),sum(SFXM83),sum(SFXM84),sum(SFXM85),sum(SFXM86),sum(SFXM87),sum(SFXM88), sum(SFXM89),sum(SFXM90),sum(SFXM91),sum(SFXM92),sum(SFXM93),sum(SFXM94),sum(SFXM95),sum(SFXM96),sum(SFXM97),sum(SFXM98) from BM_YYSFTJ where ID0000 = ad_ID0000; end if; open CUR_BM_YYSFTJ; loop fetch CUR_BM_YYSFTJ into ls_bmbh00 ; exit when CUR_BM_YYSFTJ%notfound; update BM_YYSFTJ set sfxm01=nvl(sfxm01,0),sfxm02=nvl(sfxm02,0),sfxm03=nvl(sfxm03,0),sfxm04=nvl(sfxm04,0),sfxm05=nvl(sfxm05,0),sfxm06=nvl(sfxm06,0),sfxm07=nvl(sfxm07,0), sfxm08=nvl(sfxm08,0),sfxm09=nvl(sfxm09,0),sfxm10=nvl(sfxm10,0),sfxm11=nvl(sfxm11,0),sfxm12=nvl(sfxm12,0),sfxm13=nvl(sfxm13,0),sfxm14=nvl(sfxm14,0),sfxm15=nvl(sfxm15,0), sfxm16=nvl(sfxm16,0),sfxm17=nvl(sfxm17,0),sfxm18=nvl(sfxm18,0),sfxm19=nvl(sfxm19,0),sfxm20=nvl(sfxm20,0),sfxm21=nvl(sfxm21,0),sfxm22=nvl(sfxm22,0),sfxm23=nvl(sfxm23,0), sfxm24=nvl(sfxm24,0),sfxm25=nvl(sfxm25,0),sfxm26=nvl(sfxm26,0),sfxm27=nvl(sfxm27,0),sfxm28=nvl(sfxm28,0),sfxm29=nvl(sfxm29,0),sfxm30=nvl(sfxm30,0),sfxm31=nvl(sfxm31,0), sfxm32=nvl(sfxm32,0),sfxm33=nvl(sfxm33,0),sfxm34=nvl(sfxm34,0),sfxm35=nvl(sfxm35,0),sfxm36=nvl(sfxm36,0),sfxm37=nvl(sfxm37,0),sfxm38=nvl(sfxm38,0),sfxm39=nvl(sfxm39,0), sfxm40=nvl(sfxm40,0),sfxm41=nvl(sfxm41,0),sfxm42=nvl(sfxm42,0),sfxm43=nvl(sfxm43,0),sfxm44=nvl(sfxm44,0),sfxm45=nvl(sfxm45,0),sfxm46=nvl(sfxm46,0),sfxm47=nvl(sfxm47,0), sfxm48=nvl(sfxm48,0),sfxm49=nvl(sfxm49,0),sfxm50=nvl(sfxm50,0),sfxm51=nvl(sfxm51,0),sfxm52=nvl(sfxm52,0),sfxm53=nvl(sfxm53,0),sfxm54=nvl(sfxm54,0),sfxm55=nvl(sfxm55,0) where ID0000 = ad_ID0000 and bmbh00=ls_bmbh00; end loop; close CUR_BM_YYSFTJ; commit; exception when others then AS_YHMSG0:='出错原因不详,请记录此信息并和系统管理员联系!'; AS_SYSMSG:=substr(SQLERRM||'执行存储过程错误:SP_ZH_GZLTJ0('||as_KSRQ00||','||as_KSSJ00||','||as_JSRQ00||','||as_JSSJ00|| ','||AS_TJLB00||','||as_YSLB00||','||as_YSBH00||','||as_MZZY00||'ad_ID0000,as_YHMSG0,as_SYSMSG',1,200); rollback; end;