Я использую SQL Server 2008 (хотя при необходимости имею доступ к SQL 2017) и имею такую таблицу:
DECLARE @tbl TABLE (recdate DATE, myflag BIT)
В этой таблице есть строки для всех дат в диапазоне, бит myflagбудет меняться время от времени, что-то вроде этого:
recdate | myflag
2017-01-01 | 1
2017-01-02 | 1
2017-01-03 | 1
...
2017-04-03 | 1
2017-04-04 | 0
2017-04-05 | 0
..
2017-05-15 | 0
2017-05-16 | 1
etc.
, но мне действительно нужно получить что-то вроде
period_from | period_to | myflag
2017-01-01 | 2017-04-03 | 1
2017-04-04 | 2017-05-15 | 0
2017-05-16 | 2017-05-21 | 1
, поэтому каждый раз, когда изменяется myflag, он создает новую строкуи в предыдущей строке установлена дата окончания (если это имеет смысл)
Я уверен, что есть невероятно очевидный способ сделать это, но я готов ударить головой об стену ...я ходил туда-сюда с выборками, вложенными выборками, вставками и обновлениями во временные таблицы, даже пытаясь навести курсор (я знаю! но это разовый запрос)