CftClub.ru
Клуб специалистов ЦФТ-Банк

вопрос по работе с массивами
На страницу Пред.  1, 2
 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle
Предыдущая тема :: Следующая тема  
Автор Сообщение
prog
Эксперт


Вступление в Клуб: 03.03.2008
СообщениеЧт Май 19, 2011 08:48    Ответить с цитатой
Полезность: Нет оценки
cl_r%id(false) - что-то новенькое... Smile

попробуйте так

Код:
(select
            a(a.[summa]:summ,
            a.[date]:c_date,
            a.[DT]:is_d,
            a.[DOC].[sum]:dt_summ,
            acc.[CLIENT_V].[name]:cl_v_name,
            acc.[CLIENT_R].[name]:cl_r_name
            )
         in   
            acc.[ARC_MOVE])
 


давите f12 и смотрите чистый PL\SQL код, если так понятнее
omela
Участник со стажем


Вступление в Клуб: 01.07.2008
СообщениеЧт Май 19, 2011 11:09    Ответить с цитатой
Полезность: Нет оценки
tarasov-es пишет:
Код:
(select
            a(a.[summa]:summ,
            a.[date]:c_date,
            a.[DT]:is_d,
            md.[sum]:dt_summ,
            cl_v.[name]:cl_v_name--,
            --cl_r.[name]:cl_r_name
            )
         in   
            ::[RECORDS],
            ([MAIN_DOCUM]:md),
            ([CLIENT]:cl_v)--,
            --([CLIENT]:cl_r)
             all
       where   
             
            a%collection = acc.[ARC_MOVE]
              and a.[DOC]=md
              and acc.[CLIENT_V]=cl_v
              --and acc.[CLIENT_R]%id=cl_r%id(false)
              )

acc - входящий параметр - фин счет
acc.[cl_v] - ссылка на контакт - владелец
acc.[cl_r] - ссылка на контакт - клиент для расчета(бывает не всегда)
в таком виде запрос возвращает выписку по счету.
если убрать комментарии то запрос ничего не вернет


Лучше бы написали, что вам надо выбрать конкретно и какие входящие параметры имеются, потому что на мой взгляд в текущем варианте выборки избыточное кол-во таблиц, при тех данных, которые вы в запрос выводите.
_________________
Трехглазый передает привет банкирам, и желает им долгого здравия (:.
ggrey
Участник со стажем


Вступление в Клуб: 01.10.2007
СообщениеЧт Май 19, 2011 11:12    Ответить с цитатой
Полезность: Нет оценки
Попробую предложить свои 5 копеек. В таком виде ваш запрос очень похож на SQL, а PL+ позволяет не думать о том какие таблицы вам нужно "джойнить". Т.е. я бы написал этот запрос так:
Код:

(select
            a(a.[summa]:summ,
            a.[date]:c_date,
            a.[DT]:is_d,
            a.[DOC]->(MAIN_DOCUM)[sum]:dt_summ,
            acc.[CLIENT_V].[name]:cl_v_name,
            acc.[CLIENT_R].[name]:cl_r_name
            )
         in   
            acc.[ARC_MOVE]
              )


При этом важно понимать, что наименования клиентов в данном примере будут заменены парсером на вычисленные заранее переменные.
tarasov-es
Участник со стажем


Вступление в Клуб: 18.05.2011
СообщениеЧт Май 19, 2011 14:26    Ответить с цитатой
Полезность: Нет оценки
Огромное всем спасибо. Вроде все получилось. Вот результат.

Код:
  (select
            a(a.[summa]:summ,
            to_char(a.[date],'mm'):c_date,
            to_char(a.[date],'dd.mm.yyyy'):f_date,
            a.[DT]:is_d,
            decode(a.[DT],true,nvl(md.[kl_kt].[2].[2],md.[kl_kt].[1].[1].[NAME]),nvl(md.[kl_dt].[2].[2],md.[kl_dt].[1].[1].[NAME])):kontr
            )
       in   
         ::[RECORDS],
         ([MAIN_DOCUM]:md) all
       where   
         a%collection = acc.[ARC_MOVE]
              and a.[DOC]=md
       order by a.[date] asc   
       )


и сразу вопрос..
как сделать группировку.
нужно чтобы a.[summa] суммировалась а все остальное в group by.

пробовал перед сортировкой писать

Код:

group by
to_char(a.[date],'mm'),
to_char(a.[date],'dd.mm.yyyy'),
a.[DT],
decode(a.[DT],true,nvl(md.[kl_kt].[2].[2],md.[kl_kt].[1].[1].[NAME]),nvl(md.[kl_dt].[2].[2],md.[kl_dt].[1].[1].[NAME]))

ошибок нет, но при выполнении отчета выдается ошибка о том что выражение не group by..
pas
Профи


Вступление в Клуб: 20.11.2007
СообщениеЧт Май 19, 2011 14:44    Ответить с цитатой
Полезность: Нет оценки
sum(nvl(a.[summa],0) : summ
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle Часовой пояс: GMT + 3
На страницу Пред.  1, 2
Страница 2 из 2

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Рейтинг@Mail.ru