我正在尝试计算给定期间(例如:2018年4月)每天在住院期间的患者数量,该数据基于入院数据和出院日期。例如,
Patient ID Admission date Discharge date
A 25-Apr-18 25-Apr-18
B 25-Apr-18 26-Apr-18
C 26-Apr-18 28-Apr-18
D 29-Apr-18 01-May-18
将产生以下内容:
Date Bed days
25-Apr-18 2
26-Apr-18 2
27-Apr-18 1
28-Apr-18 1
29-Apr-18 1
30-Apr-18 1
答案 0 :(得分:0)
假设您使用的是SQL Server,则代码将接近:
SELECT PatientID
,DATEDIFF(DAY, [AdmissionDate], [DischargeDate]) AS [Bed Days]
FROM [YourTable]
GROUP BY [PatientID]
每天将返回哪个PatientID计数。但是,如果没有更多信息(例如数据库类型/版本或易于阅读的首选输出),则很难获得所需的结果。
答案 1 :(得分:0)
您必须解决一个战略层面的问题:如何解决问题?换句话说,您已经有了“所需结果”表-它如何在左侧获得日期?
这似乎是一个愚蠢/愚蠢的问题,但是假设您的表中有两行:
1/1/2018 through 1/3/2018
2/1/2018 through 2/3/2018
...好吧,您的报告应该在1/4和1/31之间的所有日子里都有“ 0”名患者,对吧?因此,实际上,您要么必须遍历日期范围并生成每个日期,要么要拥有一个主“ ListOfEveryDate”表(如UnhandledExcepSean在他的评论中建议的那样)。如果要遍历日期范围,可以您将使该循环发生在SQL或.NET等高级语言中?
就我个人而言,我只是想了解MasterDateTable的想法,尽管它有点笨拙,只是因为它在代码级别是如此简单:
select
date,
(select subquery to get count of records in data table)
from
masterDateTable
where date between @startDate and @endDate
......,只要您有确保您在表格中填充日期的代码,就可以了(您讨厌代码停止工作,因为您只填充了2020年,但是事实证明它在2021年仍在使用!)