На основе этого запроса создать функцию:
Цитата: create or replace function article_ost(Mystoreloc in integer, Myarticle in Varchar2) return varchar2 is
Result number;
begin
select decode(A.PackSize,-1,A.FreeQuantity-nvl(G.SaleQ,0),null) OperFree into result
from (select
L.ID StoreLoc, Article,-1 PackSize
,nvl(G.Quantity,0) Quantity
,nvl(G.ReservedQuantity,0) ReservedQuantity
,nvl(G.IncomingQuantity,0) IncomingQuantity
,nvl(G.AwaitedQuantity,0) AwaitedQuantity
,nvl(G.FoundQuantity,0) FoundQuantity
,nvl(G.Quantity+G.FoundQuantity-(G.ReservedQuantity+G.IncomingQuantity),0) FreeQuantity
from Supermag.SMGoods G, Supermag.SMStoreLocations L
where L.ID=G.StoreLoc(+)
and G.Article(+)=&Myarticle
and l.id(+)=&Mystoreloc
union
select
L.ID StoreLoc,G.Article,G.PackSize,G.Quantity
,G.ReservedQuantity,G.IncomingQuantity,G.AwaitedQuantity,G.FoundQuantity
,G.Quantity+G.FoundQuantity-(G.ReservedQuantity+G.IncomingQuantity) FreeQuantity
from Supermag.SMGoodsPacks G, Supermag.SMStoreLocations L
where L.ID=G.StoreLoc
and G.Article=&Myarticle and l.ID=&Mystoreloc) A, (select G.LocID,sum(G.SaleQuantity-G.ReturnQuantity) SaleQ
from Supermag.SMOperGoods G
where G.Article=&Myarticle and g.locid=&Mystoreloc
group by G.LocID) G
where A.StoreLoc=G.LocID(+)
order by A.PackSize
return Result;
end
И в бизнес-анализе использовать как
Цитата: supermag.article_ost({Место хранения. Код места хранения},{Карточка товара. Артикул})
Честно говорю, на запрос надо смотреть, возможно он избыточен, просто я быстро изменила то, что предложил kadr.