запрос: новые покупатели за этот год Всем привет! Задачка на поразмять мозги. Нужно запросом вывести всех новых покупателей, которые пришли в этом году. Накидал тут кое-что. Результат выдаёт вроде правильный, но как-то неготично... Может, можно покороче? |
ВЫБРАТЬ СтарыеПродажи.Контрагент КАК Покупатель, ИСТИНА КАК ЭтоСтарыйПокупатель ПОМЕСТИТЬ СтарыеПокупатели ИЗ РегистрНакопления.Продажи.Обороты(, &НачалоГода, Период, ) КАК СтарыеПродажи ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ПокупателиЗаЭтотГод.Покупатель, ВЫБОР КОГДА ПокупателиЗаЭтотГод.ЭтоСтарыйПокупатель = ИСТИНА ТОГДА ЛОЖЬ ИНАЧЕ ИСТИНА КОНЕЦ КАК ЭтоНовый ПОМЕСТИТЬ ПокупателиЗаЭтотГод ИЗ (ВЫБРАТЬ ПродажиЗаЭтотГод.Контрагент Как Покупатель, СтарыеПокупатели.ЭтоСтарыйПокупатель ИЗ РегистрНакопления.Продажи.Обороты(&НачалоГода, &КонецГода, Период, ) КАК ПродажиЗаЭтотГод ЛЕВОЕ СОЕДИНЕНИЕ СтарыеПокупатели ПО ПродажиЗаЭтотГод.Контрагент = СтарыеПокупатели.Покупатель ) КАК ПокупателиЗаЭтотГод ; ////////////////////////////////////////////////////////////////// ВЫБРАТЬ НовыеПокупателиЗаЭтотГод.* ИЗ ПокупателиЗаЭтотГод КАК НовыеПокупателиЗаЭтотГод ГДЕ НовыеПокупателиЗаЭтотГод.ЭтоНовый = ИСТИНА |
В первом запросе пакета добавить хинт "Различные", в параметрах виртуальной таблицы не использовать периодичность. Третий запрос пакета не нужен. Во втором запросе соединение выбросить, "ПокупателиЗаЭтотГод" из полей выбросить, в параметрах виртуальной таблицы сделать условие "Не Контрагент В (Запрос к временной таблице)". |
ВЫБРАТЬ ПродажиОбороты.Контрагент ИЗ РегистрНакопления.Продажи.Обороты( &КонтрольнаяДата, &ТекущаяДата, , (НЕ Контрагент В (ВЫБРАТЬ ПродажиОбороты.Контрагент ИЗ РегистрНакопления.Продажи.Обороты(&НачалоВремён, &КонтрольнаяДата, , ) КАК ПродажиОбороты))) КАК ПродажиОбороты незнаю как в плане производительности, но так проще на мой взгляд |
(2), (3) спасибо! |
условие в параметре ВТ действительно удобнее а я чё-то зациклился на левом соединении, кручу его так и сяк, а зачем спрашивается? |
ничего личного, но построения типа ПокупателиЗаЭтотГод.ЭтоСтарыйПокупатель = ИСТИНА меня напрягают |
я тебя прекрасно понимаю ;-) |
Текущее время: 07:10. Часовой пояс GMT +3. |