Мне нужен SQL-запрос, который извлекает данные из таблицы, которая имеет непрерывные данные по состоянию, как показано ниже. Если я хочу, чтобы данные для данного временного окна отображали час/день, тогда он должен отфильтровывать записи и сворачивать информацию о состоянии.предшествующие и следующие строки
Фильтр: ОТ '2016-08-11 23: 50: 00.000' К '2016-08-13 01: 15: 00.000' - 85 минут, как выделен в желтый цвет
ценам нижеФильтры как показано ниже -
Когда я даю следующие фильтры, а затем
DECLARE @StartDate DATETIME = '2016-08-11 23:50:00.000'
DECLARE @EndDate DATETIME = '2016-08-15 01:15:00.000'
в идеале, он должен рассмотреть окно времени, как -
2016-08-11 23:50:00 to 2016-08-12 01:15:00 - 85 minutes
2016-08-12 23:50:00 to 2016-08-13 01:15:00 - 85 minutes
2016-08-13 23:50:00 to 2016-08-14 01:15:00 - 85 minutes
2016-08-14 23:50:00 to 2016-08-15 01:15:00 - 85 minutes
2016-08-15 23:50:00 to 2016-08-16 01:15:00 - 85 minutes
и так далее ....
UPDATE 3
Может кто-то помочь мне с этим запросом?
Sample Data -
create table #temp1 ([State] varchar(20),StartTimeStamp Datetime2, EndTimeStamp Datetime2, DurationInSeconds int)
Insert into #temp1 values('Away', '2016-08-11 23:40:00.000000', '2016-08-11 23:45:00.000000', 300 )
,('Appear Away','2016-08-11 23:45:00.000000', '2016-08-11 23:50:00.000000', 300)
,('Available', '2016-08-11 23:50:00.000000', '2016-08-11 23:55:00.000000', 300)
,('Available','2016-08-11 23:55:00.000000', '2016-08-11 23:59:59.000000', 299)
,('Away', '2016-08-12 00:00:00.000000', '2016-08-12 00:05:00.000000', 300)
,('Offline', '2016-08-12 00:05:00.000000', '2016-08-12 00:15:00.000000', 600)
,('Away', '2016-08-12 00:15:00.000000', '2016-08-12 00:30:00.000000', 900)
,('Appear Away','2016-08-12 00:30:00.000000', '2016-08-12 01:15:00.000000', 2700)
,('Away', '2016-08-12 01:15:00.000000', '2016-08-12 01:30:00.000000', 900)
,('Offline', '2016-08-12 01:30:00.000000', '2016-08-12 18:30:00.000000', 64800)
,('Appear Away','2016-08-12 18:30:00.000000', '2016-08-12 23:30:00.000000', 18000)
,('Available', '2016-08-12 23:30:00.000000', '2016-08-12 23:45:00.000000', 900)
,('Away', '2016-08-12 23:45:00.000000', '2016-08-12 23:50:00.000000', 300)
,('Offline', '2016-08-12 23:50:00.000000', '2016-08-12 23:55:00.000000', 300)
,('Available', '2016-08-12 23:55:00.000000', '2016-08-12 23:59:59.000000', 299)
,('Away', '2016-08-13 00:00:00.000000', '2016-08-13 00:05:00.000000', 300)
,('Offline', '2016-08-13 00:05:00.000000', '2016-08-13 00:15:00.000000', 600)
,('Away', '2016-08-13 00:15:00.000000', '2016-08-13 00:30:00.000000', 900)
,('Appear Away','2016-08-13 00:30:00.000000', '2016-08-13 01:15:00.000000', 2700)
,('Away', '2016-08-13 01:15:00.000000', '2016-08-13 01:30:00.000000', 900)
UPDATE2: Ожидаемый результат:
Пожалуйста, отредактируйте ваш вопрос и покажите результаты, которые вы хотите получить. Кроме того, вы можете объяснить красную линию. Что это значит? –
Показать ожидаемый результат пожалуйста. – NEER
Изменения, внесенные в вопрос @GordonLinoff –