День добрый. Хочу свернуть поля периода в строки, при условии что конец текущего периода будет началом следующего в одно строку как интервал.
Строки таблицы:
01.10.2023 0:00 01.10.2023 1:00 Телефон
01.10.2023 1:00 01.10.2023 2:00 Телефон
01.10.2023 2:00 01.10.2023 3:00 Телефон
01.10.2023 4:00 01.10.2023 5:00 Телефон
01.10.2023 3:00 01.10.2023 4:00 Телефон
01.10.2023 5:10 01.10.2023 6:00 Интернет
01.10.2023 6:00 01.10.2023 7:00 Интернет
01.10.2023 7:01 01.10.2023 8:00 Общение
01.10.2023 8:00 01.10.2023 9:00 Интернет
01.10.2023 9:00 01.10.2023 10:00 Телефон
01.10.2023 10:00 01.10.2023 11:00 Телефон

Хочу получить:
01.10.2023 0:00 01.10.2023 5:00 Телефон
01.10.2023 5:10 01.10.2023 7:00 Интернет
01.10.2023 7:01 01.10.2023 8:00 Общение
01.10.2023 8:00 01.10.2023 9:00 Интернет
01.10.2023 9:00 01.10.2023 11:00 Телефон
---
```1c
    ВЫБРАТЬ
    ИсхТаблица.Событие,
    ИсхТаблица.Начало
    ПОМЕСТИТЬ ДатыНачала
    ИЗ
    ИсхТаблица КАК ИсхТаблица
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ ИсхТаблица КАК ИсхТаблица1
    ПО ИсхТаблица.Окончание = ИсхТаблица1.Начало
    И ИсхТаблица.Событие = ИсхТаблица1.Событие
    ЛЕВОЕ СОЕДИНЕНИЕ ИсхТаблица КАК ИсхТаблица2
    ПО ИсхТаблица.Начало = ИсхТаблица2.Окончание
    И ИсхТаблица.Событие = ИсхТаблица2.Событие
    ГДЕ
    ИсхТаблица2.Событие ЕСТЬ NULL
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ИсхТаблица.Событие,
    ИсхТаблица.Окончание
    ПОМЕСТИТЬ ДатыОкончаний
    ИЗ
    ИсхТаблица КАК ИсхТаблица
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ ИсхТаблица КАК ИсхТаблица1
    ПО ИсхТаблица.Начало = ИсхТаблица1.Окончание
    И ИсхТаблица.Событие = ИсхТаблица1.Событие
    ЛЕВОЕ СОЕДИНЕНИЕ ИсхТаблица КАК ИсхТаблица2
    ПО ИсхТаблица.Окончание = ИсхТаблица2.Начало
    И ИсхТаблица.Событие = ИсхТаблица2.Событие
    ГДЕ
    ИсхТаблица2.Событие ЕСТЬ NULL
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ДатыНачала.Событие,
    ДатыНачала.Начало,
    МИНИМУМ(ДатыОкончаний.Окончание) КАК Окончание
    ИЗ
    ДатыНачала КАК ДатыНачала
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДатыОкончаний КАК ДатыОкончаний
    ПО ДатыНачала.Событие = ДатыОкончаний.Событие
    И ДатыНачала.Начало < ДатыОкончаний.Окончание

    СГРУППИРОВАТЬ ПО
    ДатыНачала.Событие,
    ДатыНачала.Начало

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ
    ИсхТаблица.Событие,
    ИсхТаблица.Начало,
    ИсхТаблица.Окончание
    ИЗ
    ИсхТаблица КАК ИсхТаблица
    ЛЕВОЕ СОЕДИНЕНИЕ ИсхТаблица КАК ИсхТаблица1
    ПО ИсхТаблица.Окончание = ИсхТаблица1.Начало
    И ИсхТаблица.Событие = ИсхТаблица1.Событие
    ЛЕВОЕ СОЕДИНЕНИЕ ИсхТаблица КАК ИсхТаблица2
    ПО ИсхТаблица.Начало = ИсхТаблица2.Окончание
    И ИсхТаблица.Событие = ИсхТаблица2.Событие
    ГДЕ
    ИсхТаблица1.Событие ЕСТЬ NULL
    И ИсхТаблица2.Событие ЕСТЬ NULL
```
---
```1c
    ВЫБРАТЬ
    ИсхТаблица.Событие,
    ИсхТаблица.Начало
    ПОМЕСТИТЬ ДатыНачала
    ИЗ
    ИсхТаблица КАК ИсхТаблица
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ ИсхТаблица КАК ИсхТаблица1
    ПО ИсхТаблица.Окончание = ИсхТаблица1.Начало
    И ИсхТаблица.Событие = ИсхТаблица1.Событие
    ЛЕВОЕ СОЕДИНЕНИЕ ИсхТаблица КАК ИсхТаблица2
    ПО ИсхТаблица.Начало = ИсхТаблица2.Окончание
    И ИсхТаблица.Событие = ИсхТаблица2.Событие
    ГДЕ
    ИсхТаблица2.Событие ЕСТЬ NULL
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ИсхТаблица.Событие,
    ИсхТаблица.Окончание
    ПОМЕСТИТЬ ДатыОкончаний
    ИЗ
    ИсхТаблица КАК ИсхТаблица
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ ИсхТаблица КАК ИсхТаблица1
    ПО ИсхТаблица.Начало = ИсхТаблица1.Окончание
    И ИсхТаблица.Событие = ИсхТаблица1.Событие
    ЛЕВОЕ СОЕДИНЕНИЕ ИсхТаблица КАК ИсхТаблица2
    ПО ИсхТаблица.Окончание = ИсхТаблица2.Начало
    И ИсхТаблица.Событие = ИсхТаблица2.Событие
    ГДЕ
    ИсхТаблица2.Событие ЕСТЬ NULL
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ДатыНачала.Событие,
    ДатыНачала.Начало,
    МИНИМУМ(ДатыОкончаний.Окончание) КАК Окончание
    ИЗ
    ДатыНачала КАК ДатыНачала
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДатыОкончаний КАК ДатыОкончаний
    ПО ДатыНачала.Событие = ДатыОкончаний.Событие
    И ДатыНачала.Начало < ДатыОкончаний.Окончание

    СГРУППИРОВАТЬ ПО
    ДатыНачала.Событие,
    ДатыНачала.Начало

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ
    ИсхТаблица.Событие,
    ИсхТаблица.Начало,
    ИсхТаблица.Окончание
    ИЗ
    ИсхТаблица КАК ИсхТаблица
    ЛЕВОЕ СОЕДИНЕНИЕ ИсхТаблица КАК ИсхТаблица1
    ПО ИсхТаблица.Окончание = ИсхТаблица1.Начало
    И ИсхТаблица.Событие = ИсхТаблица1.Событие
    ЛЕВОЕ СОЕДИНЕНИЕ ИсхТаблица КАК ИсхТаблица2
    ПО ИсхТаблица.Начало = ИсхТаблица2.Окончание
    И ИсхТаблица.Событие = ИсхТаблица2.Событие
    ГДЕ
    ИсхТаблица1.Событие ЕСТЬ NULL
    И ИсхТаблица2.Событие ЕСТЬ NULL
```
---
Добрый день. С вашего позволения, немного изменил ваш запрос. Хотелось бы уточнить, вы делали внутренние соединения чтобы исключить из первых 2-х ВТ (даты начала и окончания) события, которые ограничиваются одной записью, а в последнем запросе их добавляете. А что если сделать так? Ткните носом если я что-то не учел...

```1c
    ВЫБРАТЬ
    ИсхТаблица.Событие,
    ИсхТаблица.Начало,
    ПОМЕСТИТЬ ДатыНачала
    ИЗ
    ИсхТаблица КАК ИсхТаблица
    ЛЕВОЕ СОЕДИНЕНИЕ ИсхТаблица КАК ИсхТаблица2
    ПО ИсхТаблица.Начало = ИсхТаблица2.Окончание
    И ИсхТаблица.Событие = ИсхТаблица2.Событие
    ГДЕ
    ИсхТаблица2.Событие ЕСТЬ NULL
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ИсхТаблица.Событие,
    ИсхТаблица.Окончание
    ПОМЕСТИТЬ ДатыОкончаний
    ИЗ
    ИсхТаблица КАК ИсхТаблица
    ЛЕВОЕ СОЕДИНЕНИЕ ИсхТаблица КАК ИсхТаблица2
    ПО ИсхТаблица.Окончание = ИсхТаблица2.Начало
    И ИсхТаблица.Событие = ИсхТаблица2.Событие
    ГДЕ
    ИсхТаблица2.Событие ЕСТЬ NULL
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ДатыНачала.Событие,
    ДатыНачала.Начало,
    МИНИМУМ(ДатыОкончаний.Окончание) КАК Окончание
    ИЗ
    ДатыНачала КАК ДатыНачала
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДатыОкончаний КАК ДатыОкончаний
    ПО ДатыНачала.Событие = ДатыОкончаний.Событие
    И ДатыНачала.Начало < ДатыОкончаний.Окончание

    СГРУППИРОВАТЬ ПО
    ДатыНачала.Событие,
    ДатыНачала.Начало
```
---
Да возможно. Второй запрос в объединение добавил, когда отдельные события не попали в результат. Стоило потратить время и подумать, а я пошел по простому пути. Прастите.
---
Я учусь по вашему запросу, хотел понять вашу логику. Никаких претензий ))) Спасибо.