Я работаю с SQL Server 2012, у меня есть таблица с приблизительно 35 столбцами и 10+ миллионами строк.Мне нужно найти временные диапазоны по всем данным, где значение какого-либо конкретного столбца совпадает, например. Пример данных как показано ниже
Datetime col1 col2 col3
2018-05-31 0:00 1 2 1
2018-05-31 13:00 2 2 2
2018-05-31 14:30 3 2 1
2018-05-31 15:00 4 3 1
2018-05-31 16:00 4 5 1
2018-05-31 17:00 3 2 2
2018-05-31 17:30 3 2 4
2018-05-31 18:00 2 2 4
2018-05-31 20:00 1 2 6
2018-05-31 21:00 2 2 3
2018-05-31 21:10 2 2 1
2018-05-31 22:00 1 6 3
2018-05-31 22:00 4 5 1
2018-05-31 23:59 4 7 2
Найти временной диапазон по данным, где значение col2 = <2, соответственно мойожидаемый набор результатов следующий: </p>
Start Time End time Time Diff
2018-05-31 0:00 2018-05-31 14:30 14:30:00
2018-05-31 17:00 2018-05-31 21:10 4:10:00
Я могу добиться того же с помощью приведенной ниже логики, но это очень медленно, я получаю все строки и затем
Порядок по дате_Время
Отсканируйте строки, найдите первую строку, в которой точно совпадает значение, и запишите эту метку времени как время начала.
Просканируйте дальнейшие строки, пока я не получу строку, где условие нарушается, и запомните эту метку времени как время окончания.
Но так как я должен играть с огромным нет.В целом из строк это замедлит мою работу, любые входные данные или псевдокод улучшат их.