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

1. Kontakt 109 07.06.24 07:58 Сейчас в теме
Добрый день.
В поиске решения по автоматической расстановки расписания.

Входные данные: Слот на 1 час. Какое то расписание занятых слотов в течение дня.
Выходные данные: Необходимо найти окно в течение дня куда слот вставить. Если в течение дня все занято, то на следующий день.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. RustamZz 07.06.24 09:50 Сейчас в теме
(1)
ВЫБРАТЬ
	ДАТАВРЕМЯ(2024, 6, 7, 8, 0, 0) КАК Начало
ПОМЕСТИТЬ УжеЗанято

ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ДАТАВРЕМЯ(2024, 6, 7,  9, 0, 0)
ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ДАТАВРЕМЯ(2024, 6, 7, 10, 0, 0)
ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ДАТАВРЕМЯ(2024, 6, 7, 11, 0, 0)
ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ДАТАВРЕМЯ(2024, 6, 7, 12, 0, 0)
ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ДАТАВРЕМЯ(2024, 6, 7, 13, 0, 0)
ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ДАТАВРЕМЯ(2024, 6, 7, 14, 0, 0)
ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ДАТАВРЕМЯ(2024, 6, 7, 15, 0, 0)
ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ДАТАВРЕМЯ(2024, 6, 7, 16, 0, 0)
ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ДАТАВРЕМЯ(2024, 6, 7, 17, 0, 0)
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ ПЕРВЫЕ 1  * ИЗ (
ВЫБРАТЬ
	МИНИМУМ(ДОБАВИТЬКДАТЕ(УжеЗанято.Начало, ЧАС, 1)) КАК Начало
ИЗ
	УжеЗанято КАК УжеЗанято
		ЛЕВОЕ СОЕДИНЕНИЕ УжеЗанято КАК УжеЗанято2
		ПО (ДОБАВИТЬКДАТЕ(УжеЗанято.Начало, ЧАС, 1) < УжеЗанято2.Начало
				ИЛИ УжеЗанято2.Начало ЕСТЬ NULL)
		ЛЕВОЕ СОЕДИНЕНИЕ УжеЗанято КАК УжеЗанято3
		ПО ДОБАВИТЬКДАТЕ(УжеЗанято.Начало, ЧАС, 1) = УжеЗанято3.Начало
ГДЕ ЧАС(УжеЗанято.Начало) Между 8 и 16 И УжеЗанято3.Начало IS NULL

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

ВЫБРАТЬ МАКСИМУМ(ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(Начало, ДЕНЬ), ЧАС, 24+8))
ИЗ
	УжеЗанято КАК УжеЗанято) КАК ВложенныйЗапрос
ГДЕ Начало IS NOT NULL
Показать
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот