Помогите с запросом

1. sys1c 08.08.23 05:27 Сейчас в теме
Всем привет.
Есть набор данных: Заказ и по нему две Реализации. В Заказе количество 5, склад Первый.
А в Реализации, строки скорректировались на 1+2 количество и склад второй отгрузки изменился.

ВЫБРАТЬ
    "Заказ 1"            КАК Заказ,
    NULL                 КАК Реализация, 
    "Номенклатура 1"     КАК Номенклатура,
    5                    КАК Количество,
    "20"                 КАК СтавкаНДС,
    "1"                  КАК Коэф,
    "Первый"             КАК Склад
ОБЪЕДИНИТЬ

ВЫБРАТЬ
    "Заказ 1"            КАК Заказ,
    "Реализация 1"       КАК Реализация,     
    "Номенклатура 1"     КАК Номенклатура,
    1                    КАК Количество,
    "20"                 КАК СтавкаНДС,
    "1"                  КАК Коэф,
    "Первый"             КАК Склад

ОБЪЕДИНИТЬ

ВЫБРАТЬ
    "Заказ 1"            КАК Заказ,
    "Реализация 2"       КАК Реализация,     
    "Номенклатура 1"     КАК Номенклатура,
    2                    КАК Количество,
    "20"                 КАК СтавкаНДС,
    "1"                  КАК Коэф,
    <b>"Второй"</b>             КАК Склад
Показать


Как теперь сгруппировать Заказ и Реализации. с учетом корректировки складов отгрузки?
На скриншоте первая таблица Исходные данные, а вторая Желаемый результат.
Прикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. tankus 08.08.23 06:17 Сейчас в теме
У вас ерунда получается. Заведен склад - 1. Продаете с двух разных. Отчего вторую реализацию отнимать когда склада такого нет? Дальше У вас нарушение целостности данных, в результате - количество уменьшилось, а операции на реализацию все еще в очереди на исполнение - ни какого признака что они уже отнялись нет. Если принципиально делать запросами тогда надо сделать либо таблицу оборотов, либо две таблицы - склады и реализация, возможно, приход еще понадобится - как тоже на складах товар появляется? Чтобы реализацию сгруппировать с остатками на складах используйте отрицательные числа, что-то вроде вот такого:

ВЫБРАТЬ
    "Заказ 1" КАК Заказ,
    NULL КАК Реализация,
    "Номенклатура 1" КАК Номенклатура,
    5 КАК Количество,
    "20" КАК СтавкаНДС,
    "1" КАК Коэф,
    "Первый" КАК Склад
ПОМЕСТИТЬ Склады

ОБъединить

ВЫБРАТЬ
    "Заказ 1" КАК Заказ,
    NULL КАК Реализация,
    "Номенклатура 1" КАК Номенклатура,
    5 КАК Количество,
    "20" КАК СтавкаНДС,
    "1" КАК Коэф,
    "Второй" КАК Склад

ОБЪЕДИНИТЬ

ВЫБРАТЬ
    "Заказ 1",
    "Реализация 1",
    "Номенклатура 1",
    -1,
    "20",
    "1",
    "Первый"

ОБЪЕДИНИТЬ

ВЫБРАТЬ
    "Заказ 1",
    "Реализация 2",
    "Номенклатура 1",
    -2,
    "20",
    "1",
    "Второй"
;

ВЫБРАТЬ
    Склады.Заказ,
    Склады.Склад,
    Склады.Номенклатура,
    Сумма(Склады.Количество) КАК Количество
    
ИЗ
    склады КАК Склады
СГРУППИРОВАТЬ ПО
    Склады.Заказ,
    Склады.Склад,
    Склады.Номенклатура
    
Показать

Код только для понимания направления мысли. Так же можно сделать и поступления тупо положительными цифрами.
3. sys1c 08.08.23 08:21 Сейчас в теме
Удалось добиться вот такого результата и он меня почти устраивает.

    ВЫБРАТь 
        "Заказ1" КАК Заказ,
        "" КАК Реал,
        11    КАК Кол,
        "Товар1"   КАК Ном,
        1     КАК Коэф,
        "Первый" КАК СКЛАД
    ПОМЕСТИТЬ ВТОригинальныйЗаказ    
;
    ВЫБРАТЬ
        "Заказ1" КАК Заказ,
        "Реал1"  КАК Реал,
        -1       КАК Кол,
        "Товар1"      КАК Ном,
        1        КАК Коэф,
        "Первый" КАК Склад
    ПОМЕСТИТЬ ВТРеализация    
    ОБЪЕДИНИТЬ
    ВЫБРАТЬ
        "Заказ1",
        "Реал2",
        -2,
        "Товар1",
        1,
        "Второй"

;
ВЫБРАТЬ 
    Заказ,
    //МАКСИМУМ(Реал),
    Сумма(кол),
    Ном,
    МАКСИМУМ(Коэф)
    //Склад
ПОМЕСТИТЬ ВТЗаказ    
ИЗ
(
    ВЫБРАТь 
        "Заказ1" КАК Заказ,
        "" КАК Реал,
        11    КАК Кол,
        "Товар1"   КАК Ном,
        1     КАК Коэф,
        "Первый" КАК СКЛАД
    ОБЪЕДИНИТЬ
    ВЫБРАТЬ
        "Заказ1",
        "Реал1" КАК Реал,
        -1,
        "Товар1",
        1,
        "Первый"
    ОБЪЕДИНИТЬ
    ВЫБРАТЬ
        "Заказ1",
        "Реал2" КАК Реал,
        -2,
        "Товар1",
        1,
        "Второй"
        
    ) КАК Вт
    
СГРУППИРОВАТЬ ПО Заказ,  ном
;
ВЫБРАТЬ 
    Заказ КАК Заказ ,
    Реал    КАК Реал,
    СУММА(кол),
    Ном,
    Коэф,
    Склад
ИЗ (
ВЫБРАТЬ 
    Заказ КАК Заказ ,
    ""    КАК Реал,
    кол,
    Ном,
    Коэф,
    "" КАК Склад
ИЗ ВтЗаказ

ОБЪЕДИНИТЬ

ВЫБРАТЬ
    Заказ КАК Заказ,
    Реал  КАК Реал,
    -1*кол,
    Ном,
    Коэф,
    склад
ИЗ ВТРеализация    ) КАК ВТ
СГРУППИРОВАТЬ ПО Заказ, Реал, Ном, склад, Коэф
Показать



но вот как теперь в Заказ вернуть первоначальный планированный склад отгрузкИ?
Прикрепленные файлы:
4. tankus 08.08.23 10:57 Сейчас в теме
Левым соединением поле добавьте
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот