#0
by Amfiaray
Добрый день. Есть записи регистра типа: Оборудование | Дата установки | Дата снятия Оборудование 1 | 01.10.2015 | 10.10.2015 Оборудование 1 | 20.10.2015 | 31.10.2015 Оборудование 1 | 15.10.2015 | 25.10.2015 В итоге должно получиться: Оборудование 1 | 01.10.2015 | 10.10.2015 Оборудование 1 | 15.10.2015 | 31.10.2015 Возможно такое сделать запросом или придется выборку обходить в коде?
#3
by Futarkh
Думать в сторону Левого Соединения с условием ДатаСнятия2 > ДатаУстановки1 и ДатаСнятия2 < ДатаУстановки1
#4
by Futarkh
Думать в сторону Левого Соединения с условием ДатаСнятия2 > ДатаУстановки1 и ДатаСнятия2 < ДатаСнятия1
#7
by itlikbez
Можно и запросом. Запросом вообще все можно. Но лучше обрабатывать в выборке. Для этой задачи императивный подход лучше декларативного.
#8
by itlikbez
1. Левое соединение по условию (ДатаУстановки2 >= ДатаУстановки1 И ДатаУстановки2 <= ДатаСнятия1) ИЛИ (ДатаУстановки1 >= ДатаУстановки2 И ДатаУстановки1 <= ДатаСнятия2) 2. Заменить NULL на даты-корреспонденты (ЕСТЬNULL). 3. Выбрать (ВЫБОР... КОГДА) MIN для дат установки, и MAX для дат снятия. 4. Сгруппировать.
#10
by Ildarovich
Вот в этой статье есть пример 14 "Сжатое представление последовательности дат запросом", где показано, как отдельные даты объединить в интервал. Получается, что нужно "развернуть" все интервалы в набор дат интервала, затем сгруппировать (чтобы убрать "перекрытия"), а затем объединить запросом из примера 14. Развернуть интервалы можно соединением с производствеенным календарем, например, или с искусственной таблицей, построенной, например, как в статье . В обсуждении в комментарии /8/ приведено решение для объединения интервалов, но оно работает только для не пересекающихся интервалов. А вообще задача не простая. Решение может не работать для случая, когда пересекаются (стыкуются) больше двух интервалов. Для себя добавлю, что для максимальной скорости решения этой задачи (без тэта-соединений), нужно выбрать множество дней, не входящих не в какие интервалы, а затем способом из найти интервалы между пропусками. Тогда будет предельно быстро.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- v7: Объединение всех данных из 2-х одинаковых баз
- Разность дат! Как посчитать разность дат и вывести значение в месяцах?
- Как в запросе дату выразить как Дата, а не Дата+время?
- Как преобразовать в запросе дату из ЧастиДаты.ДатаВремя в ЧастиДаты.Дата?
- Есть дата начала и дата окончания как узнать попала дата в этот период или нет?
В этой группе 1С
- 1С и СуперОкна
- СКД. Условное оформление группировки выбранных полей
- Рассчитать отпуск из внешней обработки ЗУП 3.0
- УТ 11 Отчет оборачиваемость запасов на складах
- Сканер двумерных штрихкодов проходит тест устройства, но не работает спр номенкл
- УТ 11.2 <--> БП 3.0: обмен по старым правилам обмена (кто уже дорабатывал?)
- Переоценка валюты на 76.25, 76.26, 76.29 счете
- Неверный формат хранилища данных
- Ошибка при синхронизации УТ11 и БП3
- Количество элементов в запросе 1С.
- Сканер Honeywell Voyager 1450g не могу установить на Win8.1 Pro.
- 1С БП 2. " Перенос сальдо счета 68.04.2" не можем закрыть месяц
- ошибка 1С при формировании декларации по НДС в Бухгалтерии (в серверной версии)
- Добавления субконто в план счетов БП 2.0
- Комплексная автоматизация 2.0 (2.0.2.106) нет проводок в регл. учете. по банку
- Перевод нетиповой бухгалтерии 2.0 на 3.0
- Проблема при обновлении БП 3.0 на версию 3.0.43.50
- Значение не является значением объектного типа (ФоновоеЗаданиеЗапущено)
- объединение или выбор когда
- Алкогольная декларация, форма 1,2,3,4. Кто заполнял? Подскажите.