Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 BI Publisher Как построить один запрос на основании другого?  [new]
tester99
Member

Откуда:
Сообщений: 28
В такой конструкции где есть 2 запроса:

<dataQuery>

<sqlstatement name="Q1">
<![CDATA[SELECT EMPNO, ENAME, JOB from EMP
WHERE определенные_условия]]>
</sqlstatement>

<sqlstatement name="Q2">
<![CDATA[SELECT SUM(SALARY) from набор_данных_из_запроса_Q1]]>
</sqlstatement>

</dataQuery>

необходимо чтобы второй запрос использовал полученные данные из первого запроса как будто with as ... конструкция. Другими словами, мне нужно во второй группе просто перегруппировать рузультаты первого запроса и не хочется выполнять его второй раз так как он слишком тяжелый. Не хочется делать все через временные таблицы. Прошу подсказать есть ли какой то другой способ?
20 авг 13, 10:01    [14728990]     Ответить | Цитировать Сообщить модератору
 Re: BI Publisher Как построить один запрос на основании другого?  [new]
начальнига01
Guest
tester99,

сделай временную табличку и бери из нее результаты как для первого, так и для второго запроса
20 авг 13, 10:16    [14729078]     Ответить | Цитировать Сообщить модератору
 Re: BI Publisher Как построить один запрос на основании другого?  [new]
Jack Carver
Member

Откуда: obi2ru.blogspot.com
Сообщений: 1717
Если у вас там совсем лютый SQL, то можно попробовать такой подход:
1) создаете PL/SQL-функцию, которая возвращает sys_refcursor по заданным параметрам
function do_it(p_param1 in integer) return sys_refcursor is
  l_ref_cur sys_refcursor;
begin
  open l_ref_cur for
  with bla_bla_bla(...)
  select ... from bla_bla_bla where ...;
  return l_ref_cur;
end do_it;


внутри функции пишете что вам угодно;

3) обращаетесь к ней из тела отчета BIP
select do_it(:P_PARAM1) as data from dual
20 авг 13, 11:14    [14729509]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить