每天住院的SQL患者数

时间:2018-10-09 18:11:49

标签: sql count days

我正在尝试计算给定期间(例如: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

2 个答案:

答案 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年仍在使用!)