Да не сочтут за спам :)
Остатки по МХ с ценой последнего прихода (для накладных на перемещение (РЦ -> MX) цена последнего прихода по РЦ)
выполнять в ЦО.
Для быстродействия используем документы за последние 90 дней.
Код:
SELECT g.article, g.storeloc, g.quantity,
(SELECT /*+ ORDERED USE_NL (A B)*/
MAX (DECODE (a.doctype,
'WI', b.itemprice,
(SELECT /*+ ORDERED USE_NL(D S)*/
MAX (s.itemprice)KEEP (DENSE_RANK LAST ORDER BY d.createdat)
FROM smdocuments d, smspec s
WHERE s.doctype = d.doctype
AND s.docid = d.ID
AND d.doctype = 'WI'
AND d.createdat >= TRUNC (SYSDATE) - 90
AND d.locationto = a.locationfrom
AND s.article = b.article)
)
)KEEP (DENSE_RANK LAST ORDER BY a.createdat)
FROM smdocuments a, smspec b
WHERE a.doctype IN ('IW', 'WI')
AND a.locationto = g.storeloc
AND a.createdat >= TRUNC (SYSDATE) - 90
AND a.docstate = 3
AND a.doctype = b.doctype
AND a.ID = b.docid
AND b.article = g.article) itemprice
FROM smgoods g
WHERE g.storeloc = 64 AND g.quantity != 0