Мне нужно посчитать количество активных минут, учитывая StartDTS и EndDTS для каждой строки, которые находятся в пределах определенного периода времени.
Например:
RowDTS:
- [StartDTS = 06:36:00] [EndDTS = 08:42:00]
- [StartDTS = 09:37:00] [EndDTS = 13:42:00]
- [StartDTS = 14:21:00] [EndDTS = 18:21:00]
Таймфрейм:
- [Time_Frame_Start = 07:00:00] [Time_Frame_End = 15:30:00]
Если какая-либо часть времени между StartDTS и EndDTSпопадают в Time_Frame_Start и Time_Frame_End, эти минуты в пределах определенного периода времени должны быть подсчитаны.
CREATE TABLE #RowDTS (Indentifier varchar(255), StartDTS datetime2(7), EndDTS datetime2(7))
INSERT INTO #RowDTS
VALUES
('4318','2018-04-03 09:18:00.0000000','2018-04-03 10:20:00.0000000'),
('4397','2018-04-20 11:34:00.0000000','2018-04-20 12:27:00.0000000'),
('4459','2018-04-20 11:06:00.0000000','2018-04-20 11:54:00.0000000'),
('4739','2018-04-12 13:46:00.0000000','2018-04-12 17:34:00.0000000'),
('4845','2018-04-18 10:26:00.0000000','2018-04-18 15:18:00.0000000'),
('4933','2018-04-19 07:24:00.0000000','2018-04-19 09:51:00.0000000'),
('5063','2018-04-03 07:57:00.0000000','2018-04-03 11:00:00.0000000'),
('4855','2018-04-03 11:01:00.0000000','2018-04-03 11:51:00.0000000'),
('4858','2018-04-05 07:26:00.0000000','2018-04-05 11:12:00.0000000'),
('4972','2018-04-11 14:02:00.0000000','2018-04-11 16:36:00.0000000')
SELECT * FROM #RowDTS
По сути, это выходной файл, который я ищу:
+---------------+-----------------------------+-----------------------------+-----------------+
| RowIdentifier | StartDTS | EndDTS | UtilizedMinutes |
+---------------+-----------------------------+-----------------------------+-----------------+
| 431859 | 2018-04-03 09:18:00.0000000 | 2018-04-03 10:20:00.0000000 | |
| 439784 | 2018-04-20 11:34:00.0000000 | 2018-04-20 12:27:00.0000000 | |
| 445989 | 2018-04-20 11:06:00.0000000 | 2018-04-20 11:54:00.0000000 | |
| 473939 | 2018-04-12 13:46:00.0000000 | 2018-04-12 17:34:00.0000000 | |
| 484568 | 2018-04-18 10:26:00.0000000 | 2018-04-18 15:18:00.0000000 | |
| 493333 | 2018-04-19 07:24:00.0000000 | 2018-04-19 09:51:00.0000000 | |
| 506386 | 2018-04-03 07:57:00.0000000 | 2018-04-03 11:00:00.0000000 | |
| 485551 | 2018-04-03 11:01:00.0000000 | 2018-04-03 11:51:00.0000000 | |
| 485882 | 2018-04-05 07:26:00.0000000 | 2018-04-05 11:12:00.0000000 | |
| 497230 | 2018-04-11 14:02:00.0000000 | 2018-04-11 16:36:00.0000000 | |
+---------------+-----------------------------+-----------------------------+-----------------+