Добрый день.
Сделал рабочий, но не оптимизированный запрос.
Вопрос: как можно оптимизировать?
Есть 2 таблицы
Таб1 Таб2
Н1 10 Н1 9
Н2 5 Н2 5
             Н3 3
Результат:
Н1 1
Н3 -3
Запрос

ВЫБРАТЬ
 "Н1" КАК Номенклатура,
 10 КАК Количество
ПОМЕСТИТЬ Таблица1Исходная

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

ВЫБРАТЬ
 "Н2",
 5
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
 "Н1" КАК Номенклатура,
 9 КАК Количество
ПОМЕСТИТЬ Таблица2Исходная

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

ВЫБРАТЬ
 "Н2",
 5

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

ВЫБРАТЬ
 "Н3",
 3
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
 Таблица1.Номенклатура КАК Номенклатура,
 ВЫБОР
  КОГДА Таблица1.Количество >= 0
   ТОГДА 0
 КОНЕЦ КАК Количество
ПОМЕСТИТЬ Таблица3ПолучилВсюНоменклатуруСПовторяющимися
ИЗ
 Таблица1Исходная КАК Таблица1
  ПОЛНОЕ СОЕДИНЕНИЕ Таблица2Исходная КАК Таблица2
  ПО (ИСТИНА)

СГРУППИРОВАТЬ ПО
 Таблица1.Номенклатура,
 ВЫБОР
  КОГДА Таблица1.Количество >= 0
   ТОГДА 0
 КОНЕЦ

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

ВЫБРАТЬ
 Таблица2.Номенклатура,
 ВЫБОР
  КОГДА Таблица2.Количество >= 0
   ТОГДА 0
 КОНЕЦ
ИЗ
 Таблица1Исходная КАК Таблица1
  ПОЛНОЕ СОЕДИНЕНИЕ Таблица2Исходная КАК Таблица2
  ПО (ИСТИНА)

СГРУППИРОВАТЬ ПО
 Таблица2.Номенклатура,
 ВЫБОР
  КОГДА Таблица2.Количество >= 0
   ТОГДА 0
 КОНЕЦ
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
 Таблица3ПолучилВсюНоменклатуруСПовторяющимися.Номенклатура КАК Номенклатура,
 Таблица3ПолучилВсюНоменклатуруСПовторяющимися.Количество КАК Количество
ПОМЕСТИТЬ Таблица4УбралПовторяющиеся
ИЗ
 Таблица3ПолучилВсюНоменклатуруСПовторяющимися КАК Таблица3ПолучилВсюНоменклатуруСПовторяющимися
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
 Таблица4УбралПовторяющиеся.Номенклатура КАК Номенклатура,
 Таблица1Исходная.Количество КАК Количество
ПОМЕСТИТЬ Таблица5ДобавилКТаблице1ПрисутствующиеТолькоВТаб2
ИЗ
 Таблица4УбралПовторяющиеся КАК Таблица4УбралПовторяющиеся
  ЛЕВОЕ СОЕДИНЕНИЕ Таблица1Исходная КАК Таблица1Исходная
  ПО Таблица4УбралПовторяющиеся.Номенклатура = Таблица1Исходная.Номенклатура
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
 Таблица4УбралПовторяющиеся.Номенклатура КАК Номенклатура,
 Таблица4УбралПовторяющиеся.Количество + Таблица2Исходная.Количество КАК Количество
ПОМЕСТИТЬ Таблица6ДобавилКТаблице2ПрисутствующиеТолькоВТаб1
ИЗ
 Таблица4УбралПовторяющиеся КАК Таблица4УбралПовторяющиеся
  ЛЕВОЕ СОЕДИНЕНИЕ Таблица2Исходная КАК Таблица2Исходная
  ПО Таблица4УбралПовторяющиеся.Номенклатура = Таблица2Исходная.Номенклатура
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
 Таблица5ДобавилКТаблице1ПрисутствующиеТолькоВТаб2.Номенклатура КАК НоменклатураТаб1,
 ВЫБОР
  КОГДА Таблица5ДобавилКТаблице1ПрисутствующиеТолькоВТаб2.Количество ЕСТЬ NULL
   ТОГДА 0
  ИНАЧЕ Таблица5ДобавилКТаблице1ПрисутствующиеТолькоВТаб2.Количество
 КОНЕЦ КАК КоличествоТаб1,
 Таблица6ДобавилКТаблице2ПрисутствующиеТолькоВТаб1.Номенклатура КАК НоменклатураТаб2,
 ВЫБОР
  КОГДА Таблица6ДобавилКТаблице2ПрисутствующиеТолькоВТаб1.Количество ЕСТЬ NULL
   ТОГДА 0
  ИНАЧЕ Таблица6ДобавилКТаблице2ПрисутствующиеТолькоВТаб1.Количество
 КОНЕЦ КАК КоличествоТаб2,
 ВЫБОР
  КОГДА Таблица5ДобавилКТаблице1ПрисутствующиеТолькоВТаб2.Количество ЕСТЬ NULL
   ТОГДА 0
  ИНАЧЕ Таблица5ДобавилКТаблице1ПрисутствующиеТолькоВТаб2.Количество
 КОНЕЦ - ВЫБОР
  КОГДА Таблица6ДобавилКТаблице2ПрисутствующиеТолькоВТаб1.Количество ЕСТЬ NULL
   ТОГДА 0
  ИНАЧЕ Таблица6ДобавилКТаблице2ПрисутствующиеТолькоВТаб1.Количество
 КОНЕЦ КАК Разница
ИЗ
 Таблица6ДобавилКТаблице2ПрисутствующиеТолькоВТаб1 КАК Таблица6ДобавилКТаблице2ПрисутствующиеТолькоВТаб1
  ЛЕВОЕ СОЕДИНЕНИЕ Таблица5ДобавилКТаблице1ПрисутствующиеТолькоВТаб2 КАК Таблица5ДобавилКТаблице1ПрисутствующиеТолькоВТаб2
  ПО (Таблица6ДобавилКТаблице2ПрисутствующиеТолькоВТаб1.Номенклатура = Таблица5ДобавилКТаблице1ПрисутствующиеТолькоВТаб2.Номенклатура)
---
э э э, ну вы даете! на франчайзи учитесь? эт вроде как они так г..кодят
---
В общем случае так:
1) внятно поставить задачу
2) сделать как можешь, чтобы работало правильно
3) посмотреть на реальной базе, нужна ли оптимизация.
В 99% случаях на последний вопрос ответ будет отрицательный, на этом работу можно сдавать заказчику.
В конкретно этом случае надо сначала сделать пп 1 и 2.
---
Уточните. Что именно не понятно?
Конечная цель: не получить и результат и оптимизированное решение. Результат получен. Решение страдает.
---
```1c
    ВЫБРАТЬ
    "Н1" КАК Номенклатура,
    8 КАК Количество
    ПОМЕСТИТЬ Таблица1Исходная

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

    ВЫБРАТЬ
    "Н2",
    5

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

    ВЫБРАТЬ
    "Н1",
    2
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    "Н1" КАК Номенклатура,
    9 КАК Количество
    ПОМЕСТИТЬ Таблица2Исходная

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

    ВЫБРАТЬ
    "Н2",
    3

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

    ВЫБРАТЬ
    "Н3",
    3

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

    ВЫБРАТЬ
    "Н2",
    2
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    Т.Номенклатура КАК Номенклатура,
    СУММА(Т.Количество) КАК Количество
    ПОМЕСТИТЬ ВТ_Таб1ГРуп
    ИЗ
    Таблица1Исходная КАК Т

    СГРУППИРОВАТЬ ПО
    Т.Номенклатура
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    Т.Номенклатура КАК Номенклатура,
    СУММА(Т.Количество) КАК Количество
    ПОМЕСТИТЬ ВТ_Таб2Груп
    ИЗ
    Таблица2Исходная КАК Т

    СГРУППИРОВАТЬ ПО
    Т.Номенклатура
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    Т1.Номенклатура КАК Номенклатура,
    Т1.Количество - ЕСТЬNULL(Т2.Количество, 0) КАК Количество
    ИЗ
    ВТ_Таб1ГРуп КАК Т1
    ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Таб2Груп КАК Т2
    ПО Т1.Номенклатура = Т2.Номенклатура

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

    ВЫБРАТЬ
    Т2.Номенклатура,
    -Т2.Количество
    ИЗ
    ВТ_Таб2ГРуп КАК Т2
    ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Таб1Груп КАК Т1
    ПО Т1.Номенклатура = Т2.Номенклатура
    ГДЕ
    Т1.Номенклатура ЕСТЬ NULL
```
---
Почти со 100% вероятностью убирать ПОЛНОЕ СОЕДИНЕНИЕ
---
э э э, ну вы даете! на франчайзи учитесь? эт вроде как они так г..кодят
---
не без этого
---
Что за результат в вопросе? по какому алгоритму должен быть получен? И почему он не совпадает с тем, что ваш запрос выдает?