Нахождение интервалов в запросе

charivnick 27 1 2

Нахождение интервалов в запросе

Запрос.Текст = 
"ВЫБРАТЬ
|	ДАТАВРЕМЯ(2023, 1, 1) КАК ДатаНачала,
|	ДАТАВРЕМЯ(2023, 1, 1) КАК ДатаОкончания
|ПОМЕСТИТЬ ВТИсходныеДанные
|
|ОБЪЕДИНИТЬ
|
|ВЫБРАТЬ
|	ДАТАВРЕМЯ(2023, 1, 2),
|	ДАТАВРЕМЯ(2023, 1, 2)
|
|ОБЪЕДИНИТЬ
|
|ВЫБРАТЬ
|	ДАТАВРЕМЯ(2023, 1, 5),
|	ДАТАВРЕМЯ(2023, 1, 9)
|
|ОБЪЕДИНИТЬ
|
|ВЫБРАТЬ
|	ДАТАВРЕМЯ(2023, 1, 11),
|	ДАТАВРЕМЯ(2023, 1, 11)
|
|ОБЪЕДИНИТЬ
|
|ВЫБРАТЬ
|	ДАТАВРЕМЯ(2023, 1, 12),
|	ДАТАВРЕМЯ(2023, 1, 12)
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
|	Справа.ДатаНачала КАК ДатаНачала,
|	Справа.ДатаОкончания КАК ДатаОкончания,
|	СУММА(РАЗНОСТЬДАТ(Слева.ДатаНачала, Слева.ДатаОкончания, ДЕНЬ) + 1) КАК Интеграл
|ПОМЕСТИТЬ ВТИнтегралы
|ИЗ
|	ВТИсходныеДанные КАК Слева
|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТИсходныеДанные КАК Справа
|		ПО Слева.ДатаНачала <= Справа.ДатаОкончания
|
|СГРУППИРОВАТЬ ПО
|	Справа.ДатаНачала,
|	Справа.ДатаОкончания
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
|	МИНИМУМ(ВТИнтегралы.ДатаНачала) КАК ДатаНачала,
|	МАКСИМУМ(ВТИнтегралы.ДатаОкончания) КАК ДатаОкончания
|ИЗ
|	ВТИнтегралы КАК ВТИнтегралы
|
|СГРУППИРОВАТЬ ПО
|	ДОБАВИТЬКДАТЕ(ВТИнтегралы.ДатаОкончания, ДЕНЬ, -ВТИнтегралы.Интеграл)"
0
Описание дублирует название. Удалите описание, если информации в заголовке достаточно.

См. также

Объединение непересекающихся интервалов в запросе

Разбиение произвольного периода на интервалы в запросе

Инвертирование периодов в запросе

Сжатое представление последовательности дат запросом

Получение интервалов неизменности курсов валют

ОбработчикиОбновленияВИнтервале (БСП)

Определение пересечения интервалов в кольце

Определить элементарные интервалы, образующиеся при пересечении всех исходных интервалов

Проверяет корректность вводимых дат, не проверяет заполненность дат

Модератору