Я беру мин и макс нескольких точек данных, но в некоторых из них пациент отправляется в одно и то же место в разные дни. Есть ли способ добавить индекс или код, который отличает их как отдельные группы, основанные на порядке по утверждению или что-то подобное? Я хочу выделить guish их как отдельные группы (разделяя, что пациент покинул одно место, перешел в новое, а затем вернулся в исходное место (рассматривая его как новое место с точки зрения группировки)?
Вот код для создания фиктивной таблицы данных.
CREATE TABLE #StartandStop (
[hospitalname] varchar(255),
pt_id varchar(255),
[Location] varchar(255),
startdatetime datetime,
enddatetime datetime
);
INSERT INTO #StartandStop ([hospitalname],[pt_id],[Location],[startdatetime],[enddatetime])
VALUES ('ClevelandClinic', '1','A','01-01-2020 10:35', '01-02-2020 12:30'),
('ClevelandClinic', '1','B','01-02-2020 12:30', '01-03-2020 00:00'),
('ClevelandClinic', '1','B','01-03-2020 00:00', '01-04-2020 00:00'),
('ClevelandClinic', '1','B','01-04-2020 00:00', '01-04-2020 19:30'),
('ClevelandClinic', '1','C','01-04-2020 19:30', '01-05-2020 18:44'),
('ClevelandClinic', '1','B','01-05-2020 18:44', '01-05-2020 07:09'),
('ClevelandClinic', '1','D','01-05-2020 07:09', '01-05-2020 22:22'),
('ClevelandClinic', '1','D','01-05-2020 22:22', '01-06-2020 00:00'),
('ClevelandClinic', '1','D','01-06-2020 00:00', '01-07-2020 00:00'),
('ClevelandClinic', '1','D','01-07-2020 00:00', '01-08-2020 00:00'),
('ClevelandClinic', '1','C','01-08-2020 00:00', '01-08-2020 20:02');
Это код для получения результатов.
select hospitalname,pt_id,location,min(startdatetime) as 'Start',max(enddatetime) as 'End'
from #StartandStop
group by hospitalname,pt_id,location
Это результаты, которые я получаю, когда просто принимая минимальный старт и максимальную остановку каждого без учета движений пациента назад и вперед между единицами.
hospitalname pt_id location Start End
ClevelandClinic 1 A 2020-01-01 10:35:00.000 2020-01-02 12:30:00.000
ClevelandClinic 1 B 2020-01-02 12:30:00.000 2020-01-05 07:09:00.000
ClevelandClinic 1 C 2020-01-04 19:30:00.000 2020-01-08 20:02:00.000
ClevelandClinic 1 D 2020-01-05 07:09:00.000 2020-01-08 00:00:00.000
Вот результаты, которые я пытаюсь получить:
Hospital Patient Location Start Stop
ClevelandClinic 1 A 2020-01-01 10:35:00.000 2020-01-02 12:30:00.000
ClevelandClinic 1 B 2020-01-02 12:30:00.000 2020-01-04 19:30:00.000
ClevelandClinic 1 C 2020-01-04 19:30:00.000 2020-01-05 18:44:00.000
ClevelandClinic 1 B 2020-01-05 18:44:00.000 2020-01-05 07:09:00.000
ClevelandClinic 1 D 2020-01-05 07:09:00.000 2020-01-08 00:00:00.000
ClevelandClinic 1 C 2020-01-08 00:00:00.000 2020-01-08 20:02:00.000
Пожалуйста, сообщите, если есть способ пометить или отличить guish первое и второе посещения одного и того же места как разные. Спасибо!