如何将日期时间范围扩展到每个时间段一行?

问题描述 投票:0回答:1

我有患者就诊数据,包括入院日期时间、出院日期时间以及 DRGWeight 等一些指标。我需要以四小时为增量或以四小时为单位对患者进行人口普查。有没有办法对日期时间字段执行此操作并对它们进行分组?或者,每小时分解一次会有所帮助,然后我可以在另一个工具中进行分组。

例如,假设我有以下数据:

create table encounters (
    id int,
    DRGWeight decimal(10,2),
    AdmitDTS datetime,
    DischargeDTS datetime,
  );

insert into encounters values (1,'1.81','2024-01-18 10:17','2024-01-19 18:15');
insert into encounters values (2,'1.78','2024-02-07 11:37','2024-02-12 13:49');
insert into encounters values (3,'0.40','2024-01-09 5:41','2024-01-10 15:10');
insert into encounters values (4, '1-95', '2024-01-21 8:10', '2024-01-25 10:00');

我已经查找了如何分解表格,但这只是为范围内的每个日期提供了新行。

我的理想状态会导致遭遇 ID“1”显示如下所示:

id DRGWt 承认DTS 放电DTS 人口普查DTS 移动
1 1.81 2024-01-18 10:17 2024-01-19 18:15 2024-01-18 11:59 3
1 1.81 2024-01-18 10:17 2024-01-19 18:15 2024-01-18 15:59 4
1 1.81 2024-01-18 10:17 2024-01-19 18:15 2024-01-18 19:59 5
1 1.81 2024-01-18 10:17 2024-01-19 18:15 2024-01-18 23:59 6
1 1.81 2024-01-18 10:17 2024-01-19 18:15 2024-01-19 3:59 1
1 1.81 2024-01-18 10:17 2024-01-19 18:15 2024-01-19 7:59 2
1 1.81 2024-01-18 10:17 2024-01-19 18:15 2024-01-19 11:59 3
1 1.81 2024-01-18 10:17 2024-01-19 18:15 2024-01-19 15:59 4
1 1.81 2024-01-18 10:17 2024-01-19 18:15 2024-01-19 19:59 5
t-sql datetime ssms date-range
1个回答
0
投票

我不知道也不理解它的目的,但你可以在另一个表上应用完全连接来“爆炸”......

declare @encounters table (
    id int,
    DRGWeight decimal(10,2),
    AdmitDTS datetime,
    DischargeDTS datetime
  );

insert into @encounters values (1,'1.81','2024-01-18 10:17','2024-01-19 18:15');
insert into @encounters values (2,'1.78','2024-02-07 11:37','2024-02-12 13:49');
insert into @encounters values (3,'0.40','2024-01-09 5:41','2024-01-10 15:10');
insert into @encounters values (4,'1.95', '2024-01-21 8:10', '2024-01-25 10:00');

declare @t table (id int)
insert into @t values 
(1),(1),(1),(1),(1),(1)
,(2),(2),(2),(2),(2),(2)
,(3),(3),(3),(3),(3),(3)
,(4),(4),(4),(4),(4),(4)

select * 
from @encounters e
full join @t t on t.id = e.id

结果:

© www.soinside.com 2019 - 2024. All rights reserved.