Есть исходная таблица, из неё нужно получить таблицу как ниже.
Нужно всё сделать в запросе.

Я делаю первую [1] временную таблиц по типу А.
Делаю вторую [2] временную таблицу по типу Б.
Делаю временную таблицу [3] , получаю уникальные [точки-1-5]

И когда к последней таблице цепляю первую [1] и вторую [2], у меня задваивается Б и 10 (два раза), а нужно один раз.

Исходные данные:

```1c
    ВЫБРАТЬ
    "точка-1" КАК КП,
    "А" КАК Тип,
    20 КАК Количество

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

    ВЫБРАТЬ
    "точка-1",
    "А",
    40

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

    ВЫБРАТЬ
    "точка-1",
    "Б",
    10

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

    ВЫБРАТЬ
    "точка-2",
    "А",
    2

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

    ВЫБРАТЬ
    "точка-2",
    "Б",
    3

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

    ВЫБРАТЬ
    "точка-3",
    "Б",
    5

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

    ВЫБРАТЬ
    "точка-4",
    "А",
    1

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

    ВЫБРАТЬ
    "точка-4",
    "Б",
    2

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

    ВЫБРАТЬ
    "точка-5",
    "А",
    55
```
---
Решение получилось такое:

```1c
    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВТ.КП КАК КП,
    ВТ.Тип КАК Тип,
    ВТ.Количество КАК Количество
    ПОМЕСТИТЬ ВТ1
    ИЗ
    ВТ КАК ВТ
    ГДЕ
    ВТ.Тип = "А"
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВТ.КП КАК КП,
    ВТ.Тип КАК Тип,
    ВТ.Количество КАК Количество
    ПОМЕСТИТЬ ВТ2
    ИЗ
    ВТ КАК ВТ
    ГДЕ
    ВТ.Тип = "Б"
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВТ1.КП КАК КП,
    ВТ1.Тип КАК Тип,
    ВТ1.Количество КАК Количество,
    АВТОНОМЕРЗАПИСИ() КАК ИД
    ПОМЕСТИТЬ ВТ_3
    ИЗ
    ВТ1 КАК ВТ1
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВТ2.КП КАК КП,
    ВТ2.Тип КАК Тип,
    ВТ2.Количество КАК Количество,
    АВТОНОМЕРЗАПИСИ() КАК ИД
    ПОМЕСТИТЬ ВТ_4
    ИЗ
    ВТ2 КАК ВТ2
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    А1.КП КАК КП,
    А1.Тип КАК Тип,
    А1.Количество КАК Количество,
    КОЛИЧЕСТВО(А1.ИД) КАК НПП
    ПОМЕСТИТЬ ВТ_А
    ИЗ
    ВТ_3 КАК А1
    ЛЕВОЕ СОЕДИНЕНИЕ ВТ_3 КАК А2
    ПО А1.КП = А2.КП
    И А1.ИД >= А2.ИД

    СГРУППИРОВАТЬ ПО
    А1.КП,
    А1.Тип,
    А1.Количество
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    А1.КП КАК КП,
    А1.Тип КАК Тип,
    А1.Количество КАК Количество,
    КОЛИЧЕСТВО(А1.ИД) КАК НПП
    ПОМЕСТИТЬ ВТ_Б
    ИЗ
    ВТ_4 КАК А1
    ЛЕВОЕ СОЕДИНЕНИЕ ВТ_4 КАК А2
    ПО А1.КП = А2.КП
    И А1.ИД >= А2.ИД

    СГРУППИРОВАТЬ ПО
    А1.КП,
    А1.Тип,
    А1.Количество
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВЫБОР
    КОГДА ВТ_А.КП ЕСТЬ NULL
    ТОГДА ВТ_Б.КП
    ИНАЧЕ ВТ_А.КП
    КОНЕЦ КАК КП,
    ВТ_А.Тип КАК Тип,
    ВТ_А.Количество КАК Количество,
    ВТ_Б.Тип КАК Тип1,
    ВТ_Б.Количество КАК Количество1
    ИЗ
    ВТ_А КАК ВТ_А
    ПОЛНОЕ СОЕДИНЕНИЕ ВТ_Б КАК ВТ_Б
    ПО ВТ_А.КП = ВТ_Б.КП
    И ВТ_А.НПП = ВТ_Б.НПП
```
---
Как вариант:

```1c
    ВЫБРАТЬ
    КП,
    Тип КАК ТипА,
    Количество КАК КоличествоА,
    "Б" КАК ТипБ,
    0 КАК КоличествоБ
    ПОМЕСТИТЬ ВТОбщая
    ИЗ
    ВТДанные
    ГДЕ
    Тип = "А"

    ОБЪЕДИНИТЬ

    ВЫБРАТЬ
    КП,
    "А",
    0,
    Тип,
    Количество
    ИЗ
    ВТДанные
    ГДЕ
    Тип = "Б"
    ;
    ВЫБРАТЬ
    КП,
    ТипА,
    СУММА(КоличествоА) КАК КОличествоА,
    ТипБ,
    СУмма(КоличествоБ) КАК КоличествоБ
    ИЗ
    ВТОбщая
    СГРУППИРОВАТЬ ПО
    КП,
    ТипА,
    ТипБ
```
---
точка-1 у меня должна быть написана два раза. (а вы сложили её)
Посмотрите как должно получиться (картинка).
---
тогда еще проще

```1c
    ВЫБРАТЬ
    КП,
    Тип КАК ТипА,
    Количество КАК КоличествоА,
    " КАК ТипБ,
    0 КАК КоличествоБ
    ПОМЕСТИТЬ ВТОбщая
    ИЗ
    ВТДанные
    ГДЕ
    Тип = "А"

    ОБЪЕДИНИТЬ

    ВЫБРАТЬ
    КП,
    ",
    0,
    Тип,
    Количество
    ИЗ
    ВТДанные
    ГДЕ
    Тип = "Б"
```
---
Строка, где точка-1 должна быть два раза, у вас три раза.
Прикрепил, как у вас сейчас получилось.
---
```1c
    Выбрать
    Т1.КП,
    Т1.Тип,
    Т1.Количество,
    СУММА(1) КАК НомерСтроки
    ПОМЕСТИТЬ ВТДанные_
    ИЗ
    ВТДанные КАК Т1
    ЛЕВОЕ СОЕДИНЕНИЕ ВТДанные КАК Т2
    ПО Т1.КП = Т2.КП
    И Т1.Тип = Т2.Тип
    И Т1.Количество >= Т2.Количество
    СГРУППИРОВАТЬ ПО
    Т1.КП,
    Т1.Тип,
    Т1.Количество
    ;
    ВЫБРАТЬ
    КП,
    Тип КАК ТипА,
    Количество КАК КоличествоА,
    "Б" КАК ТипБ,
    0 КАК КоличествоБ,
    НомерСтроки
    ПОМЕСТИТЬ ВТОбщая
    ИЗ
    ВТДанные_
    ГДЕ
    Тип = "А"

    ОБЪЕДИНИТЬ

    ВЫБРАТЬ
    КП,
    "А",
    0,
    Тип,
    Количество,
    НомерСтроки
    ИЗ
    ВТДанные_
    ГДЕ
    Тип = "Б"
    ;
    ВЫБРАТЬ
    КП,
    ТипА,
    СУММА(КоличествоА) КАК КОличествоА,
    ТипБ,
    СУмма(КоличествоБ) КАК КоличествоБ
    ИЗ
    ВТОбщая
    СГРУППИРОВАТЬ ПО
    КП,
    ТипА,
    ТипБ,
    НомерСтроки
```
---
Последовательность строгая в итоговой таблице?
Т.е.
Точка 1 А 20 Б 10
Точка 1 А 40
Во всех случаях или не важно?
---
Не важно, главное, чтобы Б 10 не повторялось два раза (когда стыкуем таблицы).
---
Например, вот

```1c
    ВЫБРАТЬ
    "точка-1" КАК КП,
    "А" КАК Тип,
    20 КАК Количество
    ПОМЕСТИТЬ Таб1

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

    ВЫБРАТЬ
    "точка-1",
    "А",
    40

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

    ВЫБРАТЬ
    "точка-1",
    "Б",
    10

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

    ВЫБРАТЬ
    "точка-2",
    "А",
    2

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

    ВЫБРАТЬ
    "точка-2",
    "Б",
    3

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

    ВЫБРАТЬ
    "точка-3",
    "Б",
    5

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

    ВЫБРАТЬ
    "точка-4",
    "А",
    1

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

    ВЫБРАТЬ
    "точка-4",
    "Б",
    2

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

    ВЫБРАТЬ
    "точка-5",
    "А",
    55
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ РАЗЛИЧНЫЕ
    Таб1.КП КАК КП
    ПОМЕСТИТЬ Типы
    ИЗ
    Таб1 КАК Таб1
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    Типы.КП КАК КП,
    А.Тип КАК ТипА,
    А.Количество КАК КоличествоА
    ПОМЕСТИТЬ ТА
    ИЗ
    Типы КАК Типы
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ Таб1 КАК А
    ПО Типы.КП = А.КП
    И (А.Тип = "А")
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    Типы.КП КАК КП,
    Б.Тип КАК ТипБ,
    Б.Количество КАК КоличествоБ
    ПОМЕСТИТЬ ТБ
    ИЗ
    Типы КАК Типы
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ Таб1 КАК Б
    ПО Типы.КП = Б.КП
    И (Б.Тип = "Б")
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    Типы.КП КАК КП,
    ТА.ТипА КАК ТипА,
    МИНИМУМ(ТА.КоличествоА) КАК КоличествоА,
    ТБ.ТипБ КАК ТипБ,
    МИНИМУМ(ТБ.КоличествоБ) КАК КоличествоБ
    ПОМЕСТИТЬ ОбщаяТ
    ИЗ
    Типы КАК Типы
    ЛЕВОЕ СОЕДИНЕНИЕ ТА КАК ТА
    ПО (Типы.КП = ТА.КП)
    ЛЕВОЕ СОЕДИНЕНИЕ ТБ КАК ТБ
    ПО (Типы.КП = ТБ.КП)

    СГРУППИРОВАТЬ ПО
    Типы.КП,
    ТА.ТипА,
    ТБ.ТипБ
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ОбщаяТ.КП КАК КП,
    ОбщаяТ.ТипА КАК ТипА,
    ОбщаяТ.КоличествоА КАК КоличествоА,
    ОбщаяТ.ТипБ КАК ТипБ,
    ОбщаяТ.КоличествоБ КАК КоличествоБ
    ИЗ
    ОбщаяТ КАК ОбщаяТ

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

    ВЫБРАТЬ
    ТА.КП,
    ТА.ТипА,
    ТА.КоличествоА,
    NULL,
    NULL
    ИЗ
    ТА КАК ТА
    ЛЕВОЕ СОЕДИНЕНИЕ ОбщаяТ КАК ОбщаяТ
    ПО ОбщаяТ.КП = ТА.КП
    И ТА.ТипА = ОбщаяТ.ТипА
    И ТА.КоличествоА = ОбщаяТ.КоличествоА
    ГДЕ
    ОбщаяТ.ТипА Есть Null

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

    ВЫБРАТЬ
    ТБ.КП,
    NULL,
    NULL,
    ТБ.ТипБ,
    ТБ.КоличествоБ
    ИЗ
    ТБ КАК ТБ
    ЛЕВОЕ СОЕДИНЕНИЕ ОбщаяТ КАК ОбщаяТ
    ПО ОбщаяТ.КП = ТБ.КП
    И ТБ.ТипБ = ОбщаяТ.ТипБ
    И ТБ.КоличествоБ = ОбщаяТ.КоличествоБ
    ГДЕ
    ОбщаяТ.ТипБ Есть Null
```
---
запрос показан не полностью.
---
Запрос - это исходная таблица. Отображение таблички сверху.
Нужно сделать таблицу ниже.
---
А смысл соединения какой? В чем связь между строками?
---
Так заказчик хочет видеть исходные данные.
---
```1c
    ВЫБРАТЬ
    Максимум(ВЫБОР
    КОГДА Тип="А"
    ТОГДА "А"
    КОНЕЦ),

    Сумма(ВЫБОР КОГДА Тип="А"
    ТОГДА Количество
    КОНЕЦ),
    Максимум(ВЫБОР
    КОГДА Тип="Б"
    ТОГДА "Б"
    КОНЕЦ),

    Сумма(ВЫБОР КОГДА Тип="Б"
    ТОГДА Количество
    КОНЕЦ)
    ИЗ ВременнаяТаблица как вт
    СГРУППИРОВАТЬ по вт.кп
```
---
точка-1 А 20 Б 10
точка-1 А 40

ваш запрос так не показывает. Нет столбца точка-1, а 20 и 40 суммируется.
Нужно как на картинке.
---
Нужно как на картинке. Как на картинке с вашими исходными данными не получится.
```1c
    ВЫБРАТЬ
    "точка-4",
    "Б",
    2
```
На картинке значение 1 :-) А у "А" соответственно значение 2.
---
В чем сложность?
---
Нужно сделать на языке запросов 1с, а у вас оконные функции sql, которых нет в 1с.
Попробуйте написать в синтаксисе запроса языка 1с.
---
В 14 вариант чем не устраивает?
---
Тоже самое. В 1С есть нумерация.
---
И без нумерации работает
---
Да, пронумеровать можно и без нумерации :-)
Всё что пишется оконными функциями, можно и без них написать. Только это будет более длинный текст запроса с кучей группировок. Который выполняется в общем случае дольше.
---
Решение получилось такое:

```1c
    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВТ.КП КАК КП,
    ВТ.Тип КАК Тип,
    ВТ.Количество КАК Количество
    ПОМЕСТИТЬ ВТ1
    ИЗ
    ВТ КАК ВТ
    ГДЕ
    ВТ.Тип = "А"
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВТ.КП КАК КП,
    ВТ.Тип КАК Тип,
    ВТ.Количество КАК Количество
    ПОМЕСТИТЬ ВТ2
    ИЗ
    ВТ КАК ВТ
    ГДЕ
    ВТ.Тип = "Б"
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВТ1.КП КАК КП,
    ВТ1.Тип КАК Тип,
    ВТ1.Количество КАК Количество,
    АВТОНОМЕРЗАПИСИ() КАК ИД
    ПОМЕСТИТЬ ВТ_3
    ИЗ
    ВТ1 КАК ВТ1
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВТ2.КП КАК КП,
    ВТ2.Тип КАК Тип,
    ВТ2.Количество КАК Количество,
    АВТОНОМЕРЗАПИСИ() КАК ИД
    ПОМЕСТИТЬ ВТ_4
    ИЗ
    ВТ2 КАК ВТ2
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    А1.КП КАК КП,
    А1.Тип КАК Тип,
    А1.Количество КАК Количество,
    КОЛИЧЕСТВО(А1.ИД) КАК НПП
    ПОМЕСТИТЬ ВТ_А
    ИЗ
    ВТ_3 КАК А1
    ЛЕВОЕ СОЕДИНЕНИЕ ВТ_3 КАК А2
    ПО А1.КП = А2.КП
    И А1.ИД >= А2.ИД

    СГРУППИРОВАТЬ ПО
    А1.КП,
    А1.Тип,
    А1.Количество
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    А1.КП КАК КП,
    А1.Тип КАК Тип,
    А1.Количество КАК Количество,
    КОЛИЧЕСТВО(А1.ИД) КАК НПП
    ПОМЕСТИТЬ ВТ_Б
    ИЗ
    ВТ_4 КАК А1
    ЛЕВОЕ СОЕДИНЕНИЕ ВТ_4 КАК А2
    ПО А1.КП = А2.КП
    И А1.ИД >= А2.ИД

    СГРУППИРОВАТЬ ПО
    А1.КП,
    А1.Тип,
    А1.Количество
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВЫБОР
    КОГДА ВТ_А.КП ЕСТЬ NULL
    ТОГДА ВТ_Б.КП
    ИНАЧЕ ВТ_А.КП
    КОНЕЦ КАК КП,
    ВТ_А.Тип КАК Тип,
    ВТ_А.Количество КАК Количество,
    ВТ_Б.Тип КАК Тип1,
    ВТ_Б.Количество КАК Количество1
    ИЗ
    ВТ_А КАК ВТ_А
    ПОЛНОЕ СОЕДИНЕНИЕ ВТ_Б КАК ВТ_Б
    ПО ВТ_А.КП = ВТ_Б.КП
    И ВТ_А.НПП = ВТ_Б.НПП
```
---
Пронумеровать с группировкой по полям можно за два прохода. Аналог "PARTITION by".
Можно не разбивать на кучу временных таблиц. Прям всё в одной.
Завтра кроме А и Б появится В, Г, Д - и писать почти не придется. А в вашем случае придется.
---
Прям всё в одной.
Покажите пожалуйста как это сделать?
---
Если кратко, то нумеруете всё в порядке таком же как писали бы в "PARTITION by". В подзапрос и находите минимум по каждой группировке. Далее просто арифметика текущий номер минус минимум по текущей группировке + 1.
Это если коротко суть.
---
Ниже два запроса. Один оконная функция нумерации по группировкам. И тоже самое только сначала сплошная нумерация, а потом расчет npp_gr как нумерации по группировкам (+40% времени на данном коротком и маленьком примере).
Саму нумерацию можно сделать без row_number().

Извращаться можно до бесконечности.
Можно на ассемблере написать программу не использую команду MOV, только не понятно зачем так делать.