Даты свернуть в периоды с шагом один день

1. nightowl 30.07.20 17:33 Сейчас в теме
Добрый день!
КАК Даты свернуть в Период с шагом 1 день.
01.07.2020 0:00:00
02.07.2020 0:00:00
07.07.2020 0:00:00
08.07.2020 0:00:00
13.07.2020 0:00:00
14.07.2020 0:00:00
15.07.2020 0:00:00
16.07.2020 0:00:00

КАК получить результат:
01.07.2020-02.07.2020
07.07.2020-08.07.2020
13.07.2020-16.07.2020
Найденные решения
6. sanjabor 16 30.07.20 19:00 Сейчас в теме
Если правильно понял, можно примерно так:

ВЫБРАТЬ
	ДАТАВРЕМЯ(2020, 7, 1) КАК Дата
ПОМЕСТИТЬ ВТ_ИсходныеДаты

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

ВЫБРАТЬ
	ДАТАВРЕМЯ(2020, 7, 2)

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

ВЫБРАТЬ
	ДАТАВРЕМЯ(2020, 7, 7)

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

ВЫБРАТЬ
	ДАТАВРЕМЯ(2020, 7, 8)

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

ВЫБРАТЬ
	ДАТАВРЕМЯ(2020, 7, 13)

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

ВЫБРАТЬ
	ДАТАВРЕМЯ(2020, 7, 14)

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

ВЫБРАТЬ
	ДАТАВРЕМЯ(2020, 7, 15)

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

ВЫБРАТЬ
	ДАТАВРЕМЯ(2020, 7, 16)
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВТ_ИсходныеДаты.Дата КАК Дата,
	АВТОНОМЕРЗАПИСИ() КАК НомерПП
ПОМЕСТИТЬ ВТ_ИсходныеДатыСАвтонумерацией
ИЗ
	ВТ_ИсходныеДаты КАК ВТ_ИсходныеДаты
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	МИНИМУМ(ДатыНачала.Дата) КАК ДатаНачала,
	ДатыНачала.НомерПП КАК НомерПП,
	МАКСИМУМ(ДатыОкончания.Дата) КАК ДатаОкончания
ПОМЕСТИТЬ ВТ_ДатыОкончания
ИЗ
	ВТ_ИсходныеДатыСАвтонумерацией КАК ДатыНачала
		ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ИсходныеДатыСАвтонумерацией КАК ДатыОкончания
		ПО ДатыНачала.Дата < ДатыОкончания.Дата
ГДЕ
	РАЗНОСТЬДАТ(ДатыНачала.Дата, ДатыОкончания.Дата, ДЕНЬ) = ДатыОкончания.НомерПП - ДатыНачала.НомерПП

СГРУППИРОВАТЬ ПО
	ДатыНачала.НомерПП
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	МИНИМУМ(ВТ_ДатыОкончания.ДатаНачала) КАК ДатаНачала,
	ВТ_ДатыОкончания.ДатаОкончания КАК ДатаОкончания
ИЗ
	ВТ_ДатыОкончания КАК ВТ_ДатыОкончания

СГРУППИРОВАТЬ ПО
	ВТ_ДатыОкончания.ДатаОкончания

УПОРЯДОЧИТЬ ПО
	ДатаНачала
Показать
Остальные ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. Lenten 24 30.07.20 17:58 Сейчас в теме
запросом хз как. Если перебором, то просто сравнивать текущее и следующее значение. Если разница дат меньше суток, то объединять
3. alex_bob 222 30.07.20 18:03 Сейчас в теме
ВЫБРАТЬ 
    Даты.Дата,
    АВТОНОМЕРЗАПИСИ КАК НомерЗаписи
ИЗ
    Даты
ПОМЕСТИТЬ ДатыСНомеромЗаписи;
ВЫБРАТЬ
    ДатыСНомеромЗаписи.Дата,
    НомерЗаписи/2 - ВЫРАЗИТЬ(НомерЗаписи/2 КАК ЧИСЛО(6,0)) КАК Модуль2
ИЗ 
    ДатыСНомеромЗаписи
ПОМЕСТИТЬ ДатыСЧетностью;
ВЫБРАТЬ
    ДатыСЧетностью.Даты,
    АВТОНОМЕРЗАПИСИ Как Индекс
ИЗ
    ДатыСЧетностью
ГДЕ
    ДатыСЧетностью.Модуль2 <> 0
ПОМЕСТИТЬ
   ДатыНачала;
ВЫБРАТЬ
    ДатыСЧетностью.Даты,
    АВТОНОМЕРЗАПИСИ Как Индекс
ГДЕ
    ДатыСЧетностью.Модуль2 = 0
ПОМЕСТИТЬ
    ДатыОкончания;
ВЫБРАТЬ
    ДатыНачала.Дата КАК ДатаНачала,
    ДатыОкончания.Дата КАК ДатаОкончания
ИЗ ДатыНачала
ЛЕВОЕ СОЕДИНЕНИЕ ДатыОкончания ПО ДатыНачала.Индекс = ДатыОкончания.Индекс

Показать
4. alex_bob 222 30.07.20 18:10 Сейчас в теме
Сорри, не совсем правильно понял задание.
У меня получится
01.07.2020-02.07.2020
07.07.2020-08.07.2020
13.07.2020-14.07.2020
15.07.2020-16.07.2020
6. sanjabor 16 30.07.20 19:00 Сейчас в теме
Если правильно понял, можно примерно так:

ВЫБРАТЬ
	ДАТАВРЕМЯ(2020, 7, 1) КАК Дата
ПОМЕСТИТЬ ВТ_ИсходныеДаты

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

ВЫБРАТЬ
	ДАТАВРЕМЯ(2020, 7, 2)

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

ВЫБРАТЬ
	ДАТАВРЕМЯ(2020, 7, 7)

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

ВЫБРАТЬ
	ДАТАВРЕМЯ(2020, 7, 8)

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

ВЫБРАТЬ
	ДАТАВРЕМЯ(2020, 7, 13)

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

ВЫБРАТЬ
	ДАТАВРЕМЯ(2020, 7, 14)

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

ВЫБРАТЬ
	ДАТАВРЕМЯ(2020, 7, 15)

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

ВЫБРАТЬ
	ДАТАВРЕМЯ(2020, 7, 16)
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВТ_ИсходныеДаты.Дата КАК Дата,
	АВТОНОМЕРЗАПИСИ() КАК НомерПП
ПОМЕСТИТЬ ВТ_ИсходныеДатыСАвтонумерацией
ИЗ
	ВТ_ИсходныеДаты КАК ВТ_ИсходныеДаты
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	МИНИМУМ(ДатыНачала.Дата) КАК ДатаНачала,
	ДатыНачала.НомерПП КАК НомерПП,
	МАКСИМУМ(ДатыОкончания.Дата) КАК ДатаОкончания
ПОМЕСТИТЬ ВТ_ДатыОкончания
ИЗ
	ВТ_ИсходныеДатыСАвтонумерацией КАК ДатыНачала
		ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ИсходныеДатыСАвтонумерацией КАК ДатыОкончания
		ПО ДатыНачала.Дата < ДатыОкончания.Дата
ГДЕ
	РАЗНОСТЬДАТ(ДатыНачала.Дата, ДатыОкончания.Дата, ДЕНЬ) = ДатыОкончания.НомерПП - ДатыНачала.НомерПП

СГРУППИРОВАТЬ ПО
	ДатыНачала.НомерПП
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	МИНИМУМ(ВТ_ДатыОкончания.ДатаНачала) КАК ДатаНачала,
	ВТ_ДатыОкончания.ДатаОкончания КАК ДатаОкончания
ИЗ
	ВТ_ДатыОкончания КАК ВТ_ДатыОкончания

СГРУППИРОВАТЬ ПО
	ВТ_ДатыОкончания.ДатаОкончания

УПОРЯДОЧИТЬ ПО
	ДатаНачала
Показать
7. nightowl 30.07.20 19:22 Сейчас в теме
Спасибо.
Буду смотреть, где моя ошибка.
Оставьте свое сообщение
Вопросы с вознаграждением