Добрый день!
Встала задача - реализовать в бизнес-анализе аналог супермаговского отчета "График расчета с поставщиками". Соответсвенно, необходимо отбирать документы, отсрочки, тип отсрочки, задолженность.
За основу берем модель движение артикула по документам. добавляем необходимые поля отсрочки, типа отсрочки в виде формул, отсрочка=CL.PaymentDelay, тип = decode(CL.SupplierFlags, 0, 'б/дней', 'к/дней' )
Проблема возникла с долгом, пишем формулу ДОЛГ=
select dd.DEBT
from supermag.SMWayBillsIn dd
where
dd.ID = D.DocID
Ставим применить к формуле функцию сумму
и при выполнении получаем ошибку
***** Результирующий запрос *****
SELECT (CL.Name),round((CL.PaymentDelay),4),(decode(CL.SupplierFlags, 0, 'б/дней', 'к/дней' )),trunc((D.CreateDat)),(D.DocID),round((SUM(D.TotalPrice)),4),round((SUM(select dd.DEBT
from supermag.SMWayBillsIn dd
where
dd.ID = D.DocID)),4)
FROM SVAMovementArt D,SVCompanies CL
WHERE D.ClientIndex=CL.ID(+) and D.CreateDat between to_date('01.07.2011','DD.MM.YYYY') and to_date('05.07.2011','DD.MM.YYYY') and ((D.OpCode=0 and D.UserOp is null))
GROUP BY trunc((D.CreateDat)),(D.DocID),(CL.Name),(decode(CL.SupplierFlags, 0, 'б/дней', 'к/дней' )),round((CL.PaymentDelay),4)
ORDER BY 1 ASC
ORA-00936: отсутствует выражение
--
Или вариант
***** Результирующий запрос *****
SELECT (CL.Name),trunc((D.CreateDat)),(D.DocID),round((SUM(D.TotalPrice)),4),round((select dd.DEBT
from supermag.SMWayBillsIn dd
where
dd.ID = D.DocID),4)
FROM SVAMovementArt D,SVCompanies CL
WHERE D.ClientIndex=CL.ID(+) and D.CreateDat between to_date('01.07.2011','DD.MM.YYYY') and to_date('05.07.2011','DD.MM.YYYY') and ((D.OpCode=0 and D.UserOp is null))
GROUP BY trunc((D.CreateDat)),(D.DocID),(CL.Name),round((select dd.DEBT
from supermag.SMWayBillsIn dd
where
dd.ID = D.DocID),4)
ORA-22818: выражения подзапросов здесь запрещены
Подскажите, какую формулу прописать для долга. Если ставим без применить к формуле функцию, то долг выводится, но получается по каждому артикулу из документа строка выводится, что не есть гуд.