【发布时间】:2018-10-01 16:08:44
【问题描述】:
我需要一些帮助来填补一些缺失的时间(以分钟为单位)空白,并保持当前状态。我在医院工作,我们正试图随时了解医院急诊科的瓶颈。
我表中的数据如下所示:
Patient_Id event_time Event_Status_Name
98676249 2018-09-24 18:39:00.000 Expected
98676249 2018-09-24 19:17:00.000 Waiting for Triage
98676249 2018-09-24 19:28:00.000 In Triage
98676249 2018-09-24 19:29:00.000 Waiting for Room
98676249 2018-09-24 19:45:00.000 Waiting for Provider
98676249 2018-09-24 19:48:00.000 In Process
98676249 2018-09-24 21:02:00.000 Await IP Orders
98676249 2018-09-24 22:59:00.000 Await IP Bed
98676249 2018-09-25 21:44:00.000 Ready for Admit
这基本上告诉我患者何时进入特定状态。但是,我需要做的是填写缺少的分钟,并保持它们所处的状态。例如,从 2018-09-24 18:39:00.000 到 2018-09-24 19:16:00.000患者处于“预期”状态。仅以第一个状态为例,我想要的查询输出需要如下所示:
Patient_Id event_time Event_Status_Name
98676249 2018-09-24 18:39:00.000 Expected
98676249 2018-09-24 18:40:00.000 Expected
98676249 2018-09-24 18:41:00.000 Expected
98676249 2018-09-24 18:42:00.000 Expected
98676249 2018-09-24 18:43:00.000 Expected
98676249 2018-09-24 18:44:00.000 Expected
98676249 2018-09-24 18:45:00.000 Expected
98676249 2018-09-24 18:46:00.000 Expected
98676249 2018-09-24 18:47:00.000 Expected
98676249 2018-09-24 18:48:00.000 Expected
等等等等,直到我进入下一个“等待分流”状态 ...然后我需要为该状态的每一分钟做同样的事情,直到下一个......等等。等等
如何在不使用循环的情况下编写执行此操作的查询?有数百万条记录(和分钟)要考虑,所以我需要一个便宜的查询。
感谢您的帮助!
【问题讨论】:
-
请阅读this,了解一些改进问题的技巧。
-
您会考虑添加 event_start_time 和 event_end_time 吗?
-
当然。但我认为每个状态都需要有一个开始和结束时间?
-
谷歌 TSQL 中的差距和岛屿.. 像 red-gate.com/simple-talk/sql/t-sql-programming/…
标签: sql sql-server tsql