Запросом можно легко получить число заказов с некоей номенклатурой. Также легко можно получить число заказов за период вообще. А как для каждой строчки номенклатуры получить отношение первого ко второму? навскидку накиданный запрос адски тормозит.
ВЫБРАТЬ
ВложенныйЗапрос.Номенклатура,
100 * КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВложенныйЗапрос.ЗаказПокупателя) / КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЗаказыПокупателей.Ссылка) КАК ПроцентОтношения
ИЗ
(ВЫБРАТЬ
ВЫБОР
КОГДА ЗаказыПокупателейОбороты.ЗаказПокупателя ЕСТЬ NULL
ТОГДА ВедомостьПотребностейВНоменклатуре.ЗаказПокупателя
ИНАЧЕ ЗаказыПокупателейОбороты.ЗаказПокупателя
КОНЕЦ КАК ЗаказПокупателя,
ВЫБОР
КОГДА ЗаказыПокупателейОбороты.Номенклатура ЕСТЬ NULL
ТОГДА ВедомостьПотребностейВНоменклатуре.Номенклатура
ИНАЧЕ ЗаказыПокупателейОбороты.Номенклатура
КОНЕЦ КАК Номенклатура
ИЗ
РегистрНакопления.ЗаказыПокупателей.Обороты(
&НачалоПериода,
&КонецПериода,
,
ЗаказПокупателя.Дата >= &НачалоПериода
И Номенклатура В (&Номенклатура)) КАК ЗаказыПокупателейОбороты
ПОЛНОЕ СОЕДИНЕНИЕ РегистрСведений.ВедомостьПотребностейВНоменклатуре КАК ВедомостьПотребностейВНоменклатуре
ПО ЗаказыПокупателейОбороты.ЗаказПокупателя = ВедомостьПотребностейВНоменклатуре.ЗаказПокупателя
И ЗаказыПокупателейОбороты.Номенклатура = ВедомостьПотребностейВНоменклатуре.Номенклатура
ГДЕ
(ВедомостьПотребностейВНоменклатуре.Номенклатура В (&Номенклатура)
ИЛИ ЗаказыПокупателейОбороты.Номенклатура В (&Номенклатура))
И ЕСТЬNULL(ЗаказыПокупателейОбороты.КоличествоПриход, 1) > 0) КАК ВложенныйЗапрос,
Документ.ЗаказПокупателя КАК ЗаказыПокупателей
ГДЕ
ЗаказыПокупателей.Дата >= &НачалоПериода
И ЗаказыПокупателей.Проведен
правила реляционной алгебры - не использовать скалярные выражения
-> оператора выбор быть не должно - возможно ошибка проектирования бд.
правило логики
факты складываются а не перемножаются.
замените
СОЕДИНЕНИЕ
на
ОБЕДИНИТЬ
и как следствие ВЫбОР не нужен
старайтесь не использовать "РАЗЛИЧНЫЕ это как "GO TO" - mauvais ton
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой