Требуется объединить перекрывающиеся периоды. Например, шесть периодов 01.01.16 - 10.03.16; 01.02.16 - 20.03.16; 30.03.16 - 15.04.16; 10.04.16 - 12.04.16; 11.04.16 - 25.04.16; 30.04-16 - 10.05.16 должны объединиться в три 01.01.16 - 20.03.16; 30.03.16 - 25.04.16; 30.04-16 - 10.05.16
Автор: ildarovich
ВЫБРАТЬ РАЗЛИЧНЫЕ
Край.От
ПОМЕСТИТЬ ЛевыеКрая
ИЗ
Интервалы КАК Край
ЛЕВОЕ СОЕДИНЕНИЕ Интервалы КАК Интервалы
ПО (Интервалы.От < Край.От)
И Край.От <= Интервалы.До
ГДЕ
Интервалы.От ЕСТЬ NULL
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
Край.До
ПОМЕСТИТЬ ПравыеКрая
ИЗ
Интервалы КАК Край
ЛЕВОЕ СОЕДИНЕНИЕ Интервалы КАК Интервалы
ПО (Интервалы.От <= Край.До)
И Край.До < Интервалы.До
ГДЕ
Интервалы.От ЕСТЬ NULL
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ЛевыеКрая.От,
МИНИМУМ(ПравыеКрая.До) КАК До
ИЗ
ЛевыеКрая КАК ЛевыеКрая
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПравыеКрая КАК ПравыеКрая
ПО ЛевыеКрая.От <= ПравыеКрая.До
СГРУППИРОВАТЬ ПО
ЛевыеКрая.От
{2} Ожидается идентификатор
Объединение непересекающихся интервалов в запросе
Нахождение интервалов в запросе
Получить даты за период в запросе
ПодключитьТестовыйПериод (БСП)
ПодключениеТестовыхПериодов_ПроверитьСостояниеЗапроса (БСП)
Инвертирование периодов в запросе