|
V8: Помогите разобраться с объединением в запросе | ☑ | ||
---|---|---|---|---|
0
Sasha_1CK
28.04.14
✎
07:08
|
Че то ни как не могу сообразить как сделать запрос
Есть 2 РН - заявки и продажи с одинаковым комплектом измерений. Нужно объединить данные из обоих регистров по измерениеям и затем вывести вес заявки, вес продажи и отклонение. ВЫБРАТЬ ВложенныйЗапрос.Номенклатура, ВложенныйЗапрос.Заказ, ВложенныйЗапрос.Продажа, ВложенныйЗапрос.Заказ - ВложенныйЗапрос.Продажа КАК отклонение ИЗ (ВЫБРАТЬ ЗаказыТоваровОбороты.Номенклатура КАК Номенклатура, СУММА(ЗаказыТоваровОбороты.ВесОборот) КАК Заказ, 0 КАК Продажа ИЗ РегистрНакопления.ЗаказыТоваров.Обороты(&НачПериода, &КонПериода, , ) КАК ЗаказыТоваровОбороты ГДЕ ЗаказыТоваровОбороты.Номенклатура В ИЕРАРХИИ(&Номенклатура) СГРУППИРОВАТЬ ПО ЗаказыТоваровОбороты.Номенклатура ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ПродажиТоваровОбороты.Номенклатура, 0, СУММА(ПродажиТоваровОбороты.ВесОборот) ИЗ РегистрНакопления.ПродажиТоваров.Обороты(&НачПериода, &КонПериода, , ) КАК ПродажиТоваровОбороты ГДЕ ПродажиТоваровОбороты.Номенклатура В ИЕРАРХИИ(&Номенклатура) СГРУППИРОВАТЬ ПО ПродажиТоваровОбороты.Номенклатура) КАК ВложенныйЗапрос СГРУППИРОВАТЬ ПО ВложенныйЗапрос.Номенклатура, ВложенныйЗапрос.Заказ, ВложенныйЗапрос.Продажа Вот примерно как то так. И все бы ничего - но результат объединения регистров не сворачивается по измерениям при объединении - в итоге получается, что заказ идет первой строчкой, а продажа идет 2-й строчкой. Чето я где то забыл сделать - но туплю что |
|||
1
Wobland
28.04.14
✎
07:09
|
используй силу соединения, Люк
|
|||
2
AlexTim03
28.04.14
✎
07:12
|
Вот это неверно:
СГРУППИРОВАТЬ ПО ВложенныйЗапрос.Номенклатура, ВложенныйЗапрос.Заказ, ВложенныйЗапрос.Продажа ТОлько по ноненклатуре |
|||
3
Sasha_1CK
28.04.14
✎
07:14
|
(2)
Это я уже увидел Работает |
|||
4
Sasha_1CK
28.04.14
✎
07:16
|
(2)
А вот когда пытаюсь отдельно рассчитать перегруз и недогруз ВЫБРАТЬ ВложенныйЗапрос.Номенклатура, СУММА(ВложенныйЗапрос.Заказ) КАК Заказ, СУММА(ВложенныйЗапрос.Продажа) КАК Продажа, СУММА(ВЫБОР КОГДА ВложенныйЗапрос.Продажа > ВложенныйЗапрос.Заказ ТОГДА ВложенныйЗапрос.Продажа - ВложенныйЗапрос.Заказ ИНАЧЕ 0 КОНЕЦ) КАК Перегруз, СУММА(ВЫБОР КОГДА ВложенныйЗапрос.Продажа < ВложенныйЗапрос.Заказ ТОГДА ВложенныйЗапрос.Заказ - ВложенныйЗапрос.Продажа ИНАЧЕ 0 КОНЕЦ) КАК Недогруз ИЗ (ВЫБРАТЬ ЗаказыТоваровОбороты.Номенклатура КАК Номенклатура, СУММА(ЗаказыТоваровОбороты.ВесОборот) КАК Заказ, 0 КАК Продажа ИЗ РегистрНакопления.ЗаказыТоваров.Обороты(&НачПериода, &КонПериода, , ) КАК ЗаказыТоваровОбороты ГДЕ ЗаказыТоваровОбороты.Номенклатура В ИЕРАРХИИ(&Номенклатура) СГРУППИРОВАТЬ ПО ЗаказыТоваровОбороты.Номенклатура ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ПродажиТоваровОбороты.Номенклатура, 0, СУММА(ПродажиТоваровОбороты.ВесОборот) ИЗ РегистрНакопления.ПродажиТоваров.Обороты(&НачПериода, &КонПериода, , ) КАК ПродажиТоваровОбороты ГДЕ ПродажиТоваровОбороты.Номенклатура В ИЕРАРХИИ(&Номенклатура) СГРУППИРОВАТЬ ПО ПродажиТоваровОбороты.Номенклатура) КАК ВложенныйЗапрос СГРУППИРОВАТЬ ПО ВложенныйЗапрос.Номенклатура Получается одновременно и перегруз и недогруз в одной строке |
|||
5
Wobland
28.04.14
✎
07:21
|
считай разницу одним полем
|
|||
6
Sasha_1CK
28.04.14
✎
07:30
|
(5) а потом?
Надо то именно разделить перегруз\недогруз |
|||
7
Sasha_1CK
28.04.14
✎
07:32
|
(5)
Я вот думаю если результат вложенного запроса поместить в ВТ - ее можно как то свернуть по измерениям - что бы потом к ней сделать запрос? |
|||
8
Cube
28.04.14
✎
07:33
|
(7) Думаю, нужно начать с (1)...
|
|||
9
Defender aka LINN
28.04.14
✎
07:37
|
(7) Можно и без ВТ - вложенным запросом
|
|||
10
Мимохожий Однако
28.04.14
✎
07:43
|
ОФФ: Внятное описание результирующей таблицы на отдельном листочке перед созданием текста запроса позволяет избежать подобных веток
|
|||
11
Sasha_1CK
28.04.14
✎
09:21
|
(9) Наверное можно - но почему то не доходит
(10) Вот описание результирующей таблицы: Заказ | Продажа | Недогруз | Перегруз Измерение 1 Измерение 2 ... Измерение N Недогруз = Заказ - продажа когда Заказ > продажа Перегруз = Продажа - Заказ когда Продажа > Заказ Если выгрузить результат запроса с объединением в Тз и тупо ее свернуть по измерением, а потом посчитать недогруз и перегруз - то желаемый результат достижим. Но это как то не кошерно - поэтому хочется получиться сразу нужный результат запроса - но тут где то собака порылась - а где не пойму. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |