Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Отбор минимальных значений по дате в запросе объединения
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Система компоновки данных
Constantus
Приветствую, Форумчане!

В СКД сделал запрос на объединение нескольких документов: ПКО, БанкПоступление.

В результате получил данные типа

Закзз01 ПКО_01 01.01.2018
Закзз01 ПКО_02 01.01.2017
Закзз01 ПКО_03 01.01.2015
Закзз01 банк_01 01.01.2014
Закзз01 банк_02 01.01.2013
..............
Закзз02 ПКО_01 01.01.2018
Закзз02 ПКО_02 01.01.2017
Закзз02 ПКО_03 01.01.2015
Закзз02 банк_01 01.01.2014
Закзз02 банк_02 01.01.2013

Как видно по одному и тому же Заказу имеются различные поступления по типу и датам. Необходимо из этого запроса объединения выбрать только одно поступление с минимальной датой для каждого Заказа:

Закзз01 банк_02 01.01.2013
Закзз02 банк_02 01.01.2013

Как можно в запросе на объединение вырать минимальные значения по датам для каждого Заказа?
Bernet
Constantus @ Сегодня, 10:45 необходимо зарегистрироваться для просмотра ссылки ,
Не воспринимать буквально, это лишь пример алгоритма. Смысл такой сначала получаем минимальную дату поступления на каждый заказ, а дальше по этой дате уже получаем непосредственно документ Поступления
Запрос = Новый Запрос;
Запрос.Текст = "
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
|      Заказы.Ссылка КАК Заказ,
|      МИНИМУМ(ЕСТЬNULL(Поступления.Дата, ДАТАВРЕМЯ(1,1,1,0,0,0))) КАК МинДатаПоступления
|ПОМЕСТИТЬ ВтМинДатаПоступлений
|ИЗ
|     Документ.Заказ КАК Заказы
|     ЛЕВОЕ СОЕДИНЕНИЕ Документ.Поступления КАК Поступления
|          ПО Заказы.Ссылка = Поступления.Заказ
|СГРУППИРОВАТЬ ПО
|      Заказы.Ссылка
|;
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
|     ВтМинДатаПоступлений.Заказ,
|     ЕСТЬNULL(Поступления.Ссылка, ЗНАЧЕНИЕ(Документ.Поступления.ПустаяСсылка)) КАК Поступление
|ИЗ
|     ВтМинДатаПоступлений КАК ВтМинДатаПоступлений
|     ЛЕВОЕ СОЕДИНЕНИЕ Документ.Поступления  КАК Поступления
|      ПО ВтМинДатаПоступлений.МинДатаПоступления = Поступления.Дата
|       И ВтМинДатаПоступлений.Заказ = Поступления.Заказ
|";
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.