医院信息统计,统计30天内再次入院病人

zxxs1232007 2019-08-13 03:31:00
比如有一张病人信息表brxx,里面我主要用到的字段有zyh,hzxm,sfzh,ryrq,cyrq,这几个字段分别是住院号,患者姓名,身份证号,入院日期,出院日期
表名:brxx
zyh hzxm sfzh ryrq cyrq
7001 张三 522625199201010011 2019032509:58:03 2019040210:02:01
7002 李四 522625199305020012 2019040109:58:03 2019042010:58:25
7003 张三 522625199201010011 2019051508:14:00 2019052509:10:02
7004 王五 522625199502010014 2019040208:20:01 2019042011:01:20

我现在要统计4月份的30天内再入院病人,就是说在4月份出院,以他出院的时间1个月内再次入院,要把这2行数据都查询出来,比如上面表里的张三,通过姓名和身份证号确认是同一人(因为每次住院住院号不同),然后他在4月20号出院了,在5月15号又住院了,从出院到再住院没超过30天,我要的就是这样的数据。因为这个要 每一行的cyrq这个字段来做比较,不知道怎么写,是要用游标吗?请各位帮帮忙,给个示范。
...全文
1380 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
二月十六 2019-08-13
  • 打赏
  • 举报
回复
--测试数据
if not object_id(N'Tempdb..#brxx') is null
drop table #brxx
Go
Create table #brxx([zyh] NVARCHAR(20),[hzxm] nvarchar(22),[sfzh] BIGINT,[ryrq] DATETIME,[cyrq] DATETIME)
Insert #brxx
select '7001',N'张三',522625199201010011,N'20190325 09:58:03',N'20190420 10:02:01' union all
select '7002',N'李四',522625199305020012,N'20190401 09:58:03',N'20190420 10:58:25' union all
select '7003',N'张三',522625199201010011,N'20190515 08:14:00',N'20190525 09:10:02' union all
select '7004',N'王五',522625199502010014,N'20190402 08:20:01',N'20190420 11:01:20'
Go
--测试数据结束
SELECT *
FROM #brxx a
WHERE MONTH(cyrq) = 4
AND EXISTS ( SELECT *
FROM #brxx b
WHERE b.sfzh = a.sfzh
AND b.cyrq <> a.cyrq
AND DATEDIFF(DAY, a.cyrq, b.ryrq) < 30);


22,302

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧