zoukankan      html  css  js  c++  java
  • 存储过程(工作随笔) 住院情况分析

    USE [420923_2013]
    GO
    /****** Object:  StoredProcedure [dbo].[Pro_Zyqkfxb]    Script Date: 01/29/2013 09:31:34 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    ALTER  proc [dbo].[Pro_Zyqkfxb]
    @dateStart varchar(10),
    @dateEnd varchar(10),
    @Check varchar(10)-- 审核状态
    as
    declare @Sql varchar(3000);--主语句
    declare @Sql_Main varchar(3000);--所有医院查询
    declare @Sql_Mainxj varchar(200);--县级医院查询
    declare @Sql_Mainxz varchar(200);--乡镇医院查询
    declare @Sql_Mainsw varchar(200);--市外医院查询
    declare @Sql_sumStr varchar(1000);--合计字段
    declare @Sql_sumxz varchar(1000);--总合计乡镇
    declare @Sql_sumxj varchar(1000);--总合计县级
    declare @Sql_sumsw varchar(1000);--总合计市外
    declare @Sql_sumzhj varchar(1000);--总合计
    declare @Sql_Str varchar(2000);
    declare @Sql_Str2 varchar(2000);
    declare @intoTable varchar(3000);--存入临时表
    declare @checked varchar(1);
    declare @sumzfjj varchar(200);--所有机构总支付基金
    declare @sumzrc varchar(200);--所有机构总人次

    --declare @dateStart  varchar(10);
    --declare @dateEnd varchar(10);
    --declare @Check varchar(10)
    --set @dateStart='2013-01-01'
    --set @dateEnd='2013-01-24'
    --set @Check=4

    if  @Check=4 --
    begin
    set @checked=4
    end
    if  @Check=1 --
    begin
    set @checked=1
    end
    if  @Check=2 --
    begin
    set @checked=2
    end
    print (@checked)

    --所有机构总支付基金
    select @sumzfjj=sum(a.CheckFee) from dbo.v_cbzybxdj a,V_CbZyZdb b
     where a.billcode=b.billcode and a.billno=b.billno
    and WriteDate>=@dateStart  and WriteDate<=@dateEnd and CheckStatus=@checked
    print(@sumzfjj)
    --所有机构总人次
    select @sumzrc=
     count(1) from dbo.s_CbZyBxDj a,s_CbZyZdb b where a.billcode=b.billcode and
     a.billno=b.billno and WriteDate >= @dateStart  and WriteDate <=@dateEnd and CheckStatus=@checked
    print(@sumzrc)

    set @Sql_Str='
    select HospitalCode orgcode,count(1)住院人次,sum(TotalFee)住院总费用,sum(a.canfreefee)政策内费用,sum(daycount)住院天数,
    sum(freefee)基金补偿,null 医院承担,sum(freefee-a.CheckFee)核减金额 ,sum(a.CheckFee)基金支付,sum(daycount)/count(1)例均天数,
    sum(TotalFee)/count(1)例均费用,sum(TotalFee)/sum(daycount)日均费用
    ,sum(freefee)/count(1)例均补偿,convert(decimal(18,2),sum(freefee)/sum(TotalFee)*100)补偿率,
    convert(decimal(18,2),sum(freefee)/sum(a.canfreefee)*100)政策内补偿率,
    sum(a.CheckFee)/'+@sumzfjj+'*100 基金流向,
    count(1)/'+@sumzrc+'患者流向
     from dbo.v_cbzybxdj  a,v_CbZyZdb  b
     where a.billcode=b.billcode and a.billno=b.billno  and  CheckStatus='''+@checked+'''
     and WriteDate >='''+@dateStart+'''  and  WriteDate <='''+@dateEnd+'''   group by HospitalCode 
    '
    set @Sql_Str2='
    (select HospitalCode orgcode,sum(case when  left(FeeTypeCode,3)=''000'' then a.fee else 0 end)药品总费用,
    sum(case when  FeeTypeCode in (''000204'',''000202'',''000102'')then a.fee else 0 end)自费药品,
    sum(case when  left(FeeTypeCode,4)=''0201'' or  left(FeeTypeCode,4)=''0301'' then a.fee else 0 end)检查总费用,
    sum(case when  FeeTypeCode in (''020102'',''030102'')then a.fee else 0 end)自费检查
     from  dbo.v_CbZyBxDjZb a,dbo.v_CbZyBxDj b, v_CbZyZdb c where a.orgcode=b.orgcode and
     a.coopmedcode=b.coopmedcode and a.idno=b.idno and a.diagno=b.diagno
     and  c.billcode=b.billcode and c.billno=b.billno and WriteDate >='''+@dateStart+'''
     and WriteDate <='''+@dateEnd+''' and  CheckStatus='''+@checked+'''  group by b.HospitalCode)
     '
     
     --所有医院查询
    set @Sql_Main='select   c.OrgName, a.*,b.药品总费用,自费药品,检查总费用,自费检查 ,
    convert(decimal(18,2),自费药品/药品总费用*100) 药品自费率,convert(decimal(18,2),自费检查/检查总费用*100) 检查自费率
    from ('+@Sql_Str+')a, ('+@Sql_Str2+')b,(select * from p_ylfwdw where Grade in (1,2,3)and OrgType=2 ) c
     where a.orgcode=b.orgcode and a.orgcode=c.orgcode '

    --删掉临时表
    if exists (select * from sysobjects where id = object_id(N'temp_Pro_Zyqkfxb'))
     drop table temp_Pro_Zyqkfxb

    --插入临时表
    set @intoTable='
    select * into temp_Pro_Zyqkfxb  from  ('+ @Sql_Main+') a
    '
    print(@intoTable)
    exec(@intoTable)

    --乡镇医院查询
    set @Sql_Mainxz='select a. * from temp_Pro_Zyqkfxb a,(select * from p_ylfwdw where Grade=1 and OrgType=2 ) b where a.orgcode=b.orgcode'
    --县级医院查询
    set @Sql_Mainxj='select  a.* from temp_Pro_Zyqkfxb a,(select * from p_ylfwdw where Grade=2 and OrgType=2 ) b where a.orgcode=b.orgcode'
    --市外医院查询
    set @Sql_Mainsw='select  a.* from temp_Pro_Zyqkfxb a,(select * from p_ylfwdw where Grade=3 and OrgType=2 ) b where a.orgcode=b.orgcode'

    --合计字段 'select ''总合计'' 合计 ,convert (varchar(12),null) org ,
    set @Sql_sumStr='sum(isnull(住院人次,0))住院人次,sum(住院总费用)住院总费用,
    sum(政策内费用)政策内费用,sum(住院天数)住院天数,sum(基金补偿)基金补偿,sum(isnull(医院承担,0))医院承担,sum(核减金额)核减金额,
    sum(基金支付)基金支付,sum(例均天数)例均天数,sum(例均费用)例均费用,sum(日均费用)日均费用,sum(例均补偿)例均补偿,sum(补偿率)补偿率,sum(政策内补偿率)政策内补偿率,
    sum(基金流向)基金流向,sum(患者流向)患者流向,sum(药品总费用)药品总费用,sum(自费药品)自费药品,sum(检查总费用)检查总费用,sum(自费检查)自费检查,sum(药品自费率)药品自费率,sum(检查自费率)检查自费率'

    --总合计
    set @Sql_sumzhj = 'select ''总合计'' 合计 ,convert (varchar(12),420923999999) org ,'+@Sql_sumStr+' from temp_Pro_Zyqkfxb '

     --县级医院合计
    set @Sql_sumxj = 'select ''县级小计'' 合计 ,convert (varchar(12),420923000099) org ,'+@Sql_sumStr+' from ('+@Sql_Mainxj+')a'

     --乡镇医院合计
    set @Sql_sumxz = 'select ''乡镇小计'' 合计 ,convert (varchar(12),420923200001) org ,'+@Sql_sumStr+' from ('+@Sql_Mainxz+')a'
     --市外医院合计
    set @Sql_sumsw = 'select ''市外小计'' 合计 ,convert (varchar(12),420923999991) org ,'+@Sql_sumStr+' from ('+@Sql_Mainsw+')a'

    set @sql='select * from temp_Pro_Zyqkfxb a
    union all select * from ('+ @Sql_sumxz+')d
    union all select * from ('+ @Sql_sumxj+')b
    union all select * from ('+ @Sql_sumsw+')c
    union all select * from ('+ @Sql_sumzhj+')c
    order by orgcode'
    print(@sql)
    exec(@sql)

    -- exec [Pro_Zyqkfxb] '2013-01-01','2013-01-24',4


     

  • 相关阅读:
    sql求两表的并集、交集、非交集、差集、结果集排序
    c# 为什么要使用Array、ArrayList、List?
    C# 实例化的执行顺序(转)
    正则捕获url的?号传值
    mvc5中重命名项目的名称后,出现"找到多个与名为“Home”的控制器匹配的类型"
    微信开发资料
    windows下建立netcore控制台程序,然后传送到centos7下的docker容器里运行
    error MSB3552: Resource file "**/*.resx" cannot be found. [/ConsoleApp1.csproj]
    c# 编译期常量const和运行时常量readonly
    c# 多线程之-- System.Threading Timer的使用
  • 原文地址:https://www.cnblogs.com/520cc/p/2881002.html
Copyright © 2011-2022 走看看