У меня есть код ниже, написанный для вычитания из разных строк в SQL (но только для тех, которые имеют одинаковые Room и Date), чтобы получить разницу во времени между строками. Это работает, но он пропускает несколько необходимых сценариев.
Я только хочу вычесть самые последние даты друг из друга. Ниже вы видите начало моих результатов.
PatientName PatientName OutTime InTime Room Room Value
Patient A Patient B 45:00.0 55:00.0 OR 1 OR 1 10
Patient A Patient C 45:00.0 55:00.0 OR 1 OR 1 130
Patient B Patient C 00:00.0 55:00.0 OR 1 OR 1 55
Я пытаюсь подсчитать время, в течение которого неиспользуемое пространство между каждым пациентом, который заканчивает лечение, и каждым новым пациентом, который приходит, но в этом случае я получаю разницу во времени между пациентами в один и тот же день (т.е. не хочу разницы между пациентом А и пациентом С)
Я также хотел бы иметь возможность добавлять описания случаев, чтобы, если разница превышала определенную сумму (скажем, 90 минут), она не учитывалась.
Пожалуйста, сообщите.
--This code creates the table with Dummy Data
CREATE TABLE #OperatingRoom (
[Date] date,
[Room] varchar(255),
[PatientName] varchar(255),
[InTime] time,
[OutTime] time,
);
INSERT INTO #OperatingRoom ([Date],[Room],[PatientName],[InTime], [OutTime])
VALUES ('01-01-2019', 'OR 1', 'Patient A', '08:02:00','09:45:00'),
('01-01-2019', 'OR 1', 'Patient B', '09:55:00','11:00:00'),
('01-01-2019', 'OR 1', 'Patient C', '11:55:00','14:00:00'),
('01-02-2019', 'OR 1', 'Patient D', '08:59:00','09:14:00'),
('01-02-2019', 'OR 1', 'Patient E', '11:02:00','13:30:00'),
('01-02-2019', 'OR 2', 'Patient F', '14:02:00','16:02:00'),
('01-03-2019', 'OR 2', 'Patient B', '07:55:00','11:00:00'),
('01-03-2019', 'OR 2', 'Patient C', '11:55:00','13:00:00'),
('01-03-2019', 'OR 3', 'Patient D', '08:59:00','09:14:00'),
('01-03-2019', 'OR 2', 'Patient E', '13:02:00','13:30:00'),
('01-03-2019', 'OR 3', 'Patient F', '14:02:00','16:02:00')
;
--This code performs the object of the query
SELECT
T1.PatientName,
T2.PatientName,
T1.[OutTime]
,T2.InTime,
T1.Room,
T2.Room,
datediff(mi,T1.OutTime,T2.InTime) AS Value
FROM #operatingroom T1
JOIN #operatingroom T2
ON T2.[OutTime] > T1.[InTime]
and T1.[Date] = T2.[Date]
and T1.Room = T2.Room
and T1.PatientName <> T2.PatientName