吉林市审计局:运用SQL开窗函数查询医院分解住院情况

23.09.2016  20:04

  近期,吉林市审计局对本市一所大型医院2015年度财务收支情况进行审计。通过从Oracle数据库导出业务数据,并根据业务数据审计方案提取15张标准表,利用其中的住院结算表,查询该医院分解住院情况。以下是查询的审计方法步骤: 

  一、使用排名开窗函数,对每个患者当年住院情况进行分组,形成住院次数序号,并生成分解住院1表。 

  SQL语句: 

  select row_number() over(partition by 身份证号 order by 入院时间) 序号,姓名,身份证号,入院时间,出院时间 

  into 分解住院1 

  from 住院结算表 

  where year(入院时间)=2015 and 身份证号 is not null 

  查询结果如下: 

   

  二、利用分组函数查询出当年住院次数大于1次的患者情况,并生成分解住院2表。 

  SQL语句: 

  select 身份证号,count(*) 住院次数 

  into 分解住院2 

  from 住院结算表 

  where (year(入院时间)=2015 or year(出院时间)=2015) and 身份证号 is not null 

  group by 身份证号 

  having  count(*)>1  

  order by 2 desc 

  查询结果如下: 

   

  三、通过身份证号对分解住院1、2表进行左连接,得到多次住院患者出入院情况,生成分解住院3表。 

  select b.* 

  into 分解住院3 

  from dbo.分解住院2 a left join dbo.分解住院1 b on a.身份证号=b.身份证号 

   

  四、通过对分解住院3表进行自连接,查出多次住院患者连续两次住院时间间隔小于3天(分解住院间隔天数可根据实际情况自行设定)人员情况。 

  SELECT a.*,b.* 

  FROM 分解住院3 a left 分解住院3 b 

  on a.序号=b.序号+1 and a.身份证号=b.身份证号 

  where DATEDIFF(DAY,b.出院时间,a.入院时间)<3 

   

  通过上述四步可以方便直观的查出可能存在分解住院的患者情况,为下步核实提供可靠线索,提高了医院业务数据分析的效率。

  (吉林市审计局  陈略  供稿)