[ОТВЕТИТЬ]
Опции темы
05.07.2011 16:57  
Starter
Добрый день!
Встала задача - реализовать в бизнес-анализе аналог супермаговского отчета "График расчета с поставщиками". Соответсвенно, необходимо отбирать документы, отсрочки, тип отсрочки, задолженность.
За основу берем модель движение артикула по документам. добавляем необходимые поля отсрочки, типа отсрочки в виде формул, отсрочка=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: выражения подзапросов здесь запрещены

Подскажите, какую формулу прописать для долга. Если ставим без применить к формуле функцию, то долг выводится, но получается по каждому артикулу из документа строка выводится, что не есть гуд.
 
05.07.2011 17:45  
Mtirt
А нельзя как-нибудь привести всё это в читаемый вид?
Запросы выделить тегами, в самих запросах условия как-нибудь красиво отформатировать?
 
05.07.2011 17:53  
Starter
Да в принципе с этим уже разобрался, путем создания функции. Поэтому интересует принцип - если в формуле указывается напрямую запрос select и ставится применить к формуле функцию, то бизнес анализ это не переваривает. Есть какой то способ этого избежать, помимо создания функций ?

И еще возник вопрос - можно ли как то банковские дни в календарные перевести ?
есть ли стандартные функции для этого ?
 
05.07.2011 18:28  
Starter
в функциях супермага нашел
REP_GETPAYMENTDATE
и DAYISWORK, вторая возвращает 1 если нерабочий и 2 если рабочий. первая - не знаю даже какие аргументы у нее.
 
05.07.2011 21:14  
vdm
Цитата:
Сообщение от Starter
Да в принципе с этим уже разобрался, путем создания функции. Поэтому интересует принцип - если в формуле указывается напрямую запрос select и ставится применить к формуле функцию, то бизнес анализ это не переваривает. Есть какой то способ этого избежать, помимо создания функций ?
Попробуй select в круглые скобки обернуть.
( select .. from .. where .. )
Первый "***** Результирующий запрос *****" в таком виде работает (в самом СМ не проверял)
 
06.07.2011 10:23  
Starter
Первый работает, а второй нет. я так понимаю, ему не нравится то, что в GROUP BY используется Select, интересно, почему тогда в первом случае при генерации SELECT бизнес анализ не добавляет в GROUP BY этот самый запрос, а во втором добавляет.
Есть у кого мысли на этот счет ?
И может кто из гуру напишет код, как имея число дней отсрочки, тип отсрочки, дату накладной и функцию определения рабочий это день или нет (DAYISWORK) определить дату платежа ?
 
 
Опции темы



Часовой пояс GMT +3, время: 16:37.

Все в прочитанное - Календарь - RSS - - Карта - Вверх 👫 Яндекс.Метрика
Форум сделан на основе vBulletin®
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd. Перевод: zCarot и OlegON
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.