2017-08-16 172 views
-3

我正在研究SQL,并遇到需要使用SQL构建的一个场景。 下面是情形:SQL中的累积计数

PatientID AdmitDate   DischargeDate 
12  7/24/2017 09:45 7/24/2017 11:01 
13  7/21/2016 08:37 7/22/2017 00:15 

我想导致设置如下:

enter image description here

  • 对于patientID 13,计数在第一2行被计算和
  • 对于patientid 12,计数在最后一行计算。
+3

您正在使用哪种RDBMS?请修改标签,除非您专门寻找适用于多种类型的答案 – Bridge

+0

一次只能有患者吗? – Whencesoever

+1

你有没有试过为此写任何东西呢?如果是这样,请展示它。请注意,使用SQL可能无法直接获得所需的输出布局。你可能需要在你的UI层做到这一点。在显示的输出中,如何查看哪个记录是针对哪个患者的?目前尚不清楚。或者它不相关?例如如果患者的时间重叠1小时,那么我们是否会期望在那一小时显示“2”,因为当时有2名患者正在接受治疗?这还不清楚。我认为我们需要一些更好的样本数据才能得到这个结果 – ADyson

回答

-1

那么,看起来像你做的任何事情都会很慢。我想我会用一个理货表。该表格不仅包含通常n年的日期/日/星期等,还包含当天每小时的一条记录。主键将代表这些分段中的一个。

然后,您可以将患者的入院日期和出院日期传递给将返回患者所在小时的列表或范围的函数。因此,患者13可能得到(例如)1500,1517的返回值(即,患者进入17小时,并且您将知道日期和时间,因为1500将是记录的主键,为您提供日期和时间他被录取的一天中的一小时)。患者12将(继续该示例)返回值1544,1546

然后,您可以通过从计数表中返回这些日期之间的所有数据,然后检查是否每个小时对特定患者是肯定的或不肯定的。

数据的显示 - 你想要的结果集 - 我会在其他地方做。我可能会返回两个数据集。一个将被用来建立你的表格结构。另一个将用于决定是否在框中放置'1'。你可以做你的总结。

我想这会让患者在同一日期变得有趣......您必须分别显示每个患者?