08.04.2015, 16:37 | #1 |
Участник
|
Помощь с запросом суммарное колличество по блокированным паллетам
Добрый день!
Подскажите пожалуйста как правильно составить запрос - в итоге мне надо получить суммарно заблокированное количество по артикулу в разрезе аналитик - склад, сайт. Такой вариант вот плохо работает: X++: static void Job56(Args _args) { InventSum inventSum; WmsPallet wmsPallet; InventDim inventDim; ; while select inventSum where inventSum.ItemId == "a25009" && inventSum.Closed == NoYes::No && inventSum.ClosedQty == NoYes::No join inventDim where inventDim.inventDimId == inventSum.InventDimId { If(wmsPallet::find(inventDim.wMSPalletId).IsPalletBlocked == NoYes::Yes) { inventSum.PhysicalInvent += inventSum.PhysicalInvent; } } info(strfmt("%1", inventSum.PhysicalInvent)); |
|
08.04.2015, 17:37 | #2 |
Участник
|
X++: InventSum inventSum; WmsPallet wmsPallet; InventDim inventDim; ; while select inventSum where inventSum.ItemId == "a25009" && inventSum.Closed == NoYes::No && inventSum.ClosedQty == NoYes::No join inventDim where inventDim.inventDimId == inventSum.InventDimId exist join wmsPallet where wmsPallet.wMSPalletId == inventDim.wMSPalletId && wmsPallet.IsPalletBlocked == NoYes::Yes { inventSum.PhysicalInvent += inventSum.PhysicalInvent; } info(strfmt("%1", inventSum.PhysicalInvent)); Последний раз редактировалось Kiot; 08.04.2015 в 17:40. |
|
08.04.2015, 17:39 | #3 |
Гость
|
select sum(..) from inventSum
group by ItemId, where ... exists join inventDim where inventDim.inventDimId == inventSum.InventDimId exists join wmsPallet where... ? |
|
|
За это сообщение автора поблагодарили: Art_Tanis (1). |
08.04.2015, 17:42 | #4 |
Участник
|
Вот почему то возвращает ноль. Щас буду деббажить. А паллета заблокированная есть.
|
|
08.04.2015, 17:46 | #5 |
Участник
|
Работает вот это:
select sum(PhysicalInvent) from inventSum group by ItemId where inventSum.ItemId == "a25009" && inventSum.Closed == NoYes::No && inventSum.ClosedQty == NoYes::No exists join inventDim where inventDim.inventDimId == inventSum.InventDimId exists join wmsPallet where wmsPallet.wMSPalletId == inventDim.wMSPalletId && wmsPallet.IsPalletBlocked == NoYes::Yes; info(strfmt("%1", inventSum.PhysicalInvent)); |
|
09.04.2015, 09:45 | #6 |
Участник
|
Еще один вопрос. В зависимости от флага в таблице InventDimParm необходимо добавлять параметр аргумента InventDim к поиску:
X++: protected qty calcInventSummBlockedFromDim(ItemId _itemId, InventDim _inventDim, inventDimParm _inventDimParm) { InventSum inventSum; WmsPallet wmsPallet; InventDim inventDim; ; if (_inventDimParm.IvnentSiteId == NoYes::Yes) { select sum(PhysicalInvent) from inventSum group by ItemId where inventSum.ItemId == _itemId && inventSum.Closed == NoYes::No && inventSum.ClosedQty == NoYes::No exists join inventDim where inventDim.inventDimId == inventSum.InventDimId && inventDim.InventSiteId == _inventDim.InventSiteId exists join wmsPallet where wmsPallet.wMSPalletId == inventDim.wMSPalletId && wmsPallet.IsPalletBlocked == NoYes::Yes; } return inventSum.PhysicalInvent; } |
|
09.04.2015, 11:06 | #7 |
Участник
|
Посмотрите перекресные ссылки по макросу #InventDimExistsJoin (он в АОТ). Этот макрос используется для фильтра выборки по аналитикам выбраным в парм таблице. Найдется 1000 и 1 пример.
|
|
09.04.2015, 11:08 | #8 |
Участник
|
Спасибо. Сделал. Должен сказать комьюнити очень активное. Всем большое спасибо.
|
|
09.04.2015, 14:07 | #9 |
Сенбернар
|
Иногда лучше жевать, чем говорить (с) реклама
|
|
|
Похожие темы | ||||
Тема | Ответов | |||
Помощь с запросом | 7 | |||
Выборка произвольных записей одним запросом | 1 | |||
Помогите с SQL запросом | 8 | |||
расчеты с персоналом. мат. помощь | 1 | |||
Очень нужна Ваша помощь!!! | 2 |
|