Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Проблемка с select sum(case when... ) into OUT_PARAM  [new]
stackJava
Member

Откуда:
Сообщений: 1
Добрый день.
Пишу некую процедурку в Оракл:
    procedure GET_SUM_BONUSES(ID   in  varchar2,
                                      TYPE      in varchar2,
                                      DATE_FROM         in date,
                                      DATE_TO           in date,
                                      PLUS_BONUSES       out number,
                                      ORDER_BONUSES      out number,
                                      FIRE_BONUSES       out number,
                                      CONVERSION_BONUSES out number) is
        DATE_FROM_START_DAY DATE := TRUNC(DATE_FROM);
        DATE_TO_END_DAY DATE := TRUNC(DATE_TO) + (86399/86400);
    begin
        select
            sum(case when ROW_TYPE = 'ACCURAL' then OPERATION_BONUS_SUM else 0 end) into GET_SUM_BONUSES.PLUS_BONUSES,
            sum(case when ROW_TYPE = 'ORDER' then OPERATION_BONUS_SUM else 0 end) into GET_SUM_BONUSES.ORDER_BONUSES,
            sum(case when ROW_TYPE = 'FIRE' then OPERATION_BONUS_SUM else 0 end) into GET_SUM_BONUSES.FIRE_BONUSES,
            sum(case when ROW_TYPE = 'CASHBACK' then OPERATION_BONUS_SUM else 0 end) into GET_SUM_BONUSES.CONVERSION_BONUSES
        from OPERATION t
        where t.ID = GET_SUM_BONUSES.ID
          and TYPE = GET_SUM_BONUSES.TYPE
          and CREATE_DTTM>=nvl(DATE_FROM_START_DAY, CREATE_DTTM) AND CREATE_DTTM<=nvl(DATE_TO_END_DAY, CREATE_DTTM);
    end;

Получаю ошибку PL/SQL: ORA-00934: group function is not allowed here.

Итого все таки без вариантов делать 4 селекта отдельно?

Или есть магия чтобы сделать один select и растолкать результаты группировки в разные out параметры?

Модератор: Пользуйтесь тегом SRC при оформлении кода.


Сообщение было отредактировано: 1 июн 21, 13:02
1 июн 21, 12:29    [22329766]     Ответить | Цитировать Сообщить модератору
 Re: Проблемка с select sum(case when... ) into OUT_PARAM  [new]
dmdmdm
Member

Откуда: Нижний Новгород
Сообщений: 1740
  select sum1, sum2, sum3, sum4 into PLUS_BONUSES, ORDER_BONUSES, FIRE_BONUSES, CONVERSION_BONUSES
    from (
  select sum(case
               when ROW_TYPE = 'ACCURAL' then
                OPERATION_BONUS_SUM
               else
                0
             end) sum1, 
....
1 июн 21, 12:40    [22329771]     Ответить | Цитировать Сообщить модератору
 Re: Проблемка с select sum(case when... ) into OUT_PARAM  [new]
oragraf
Member

Откуда: Moscow
Сообщений: 1347
stackJava,

где ты такой синтаксис нашел?
1 июн 21, 12:41    [22329773]     Ответить | Цитировать Сообщить модератору
 Re: Проблемка с select sum(case when... ) into OUT_PARAM  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 3070
stackJava,

select
 sum(case when ROW_TYPE = 'ACCURAL' then OPERATION_BONUS_SUM else 0 end) ,
 sum(case when ROW_TYPE = 'ORDER' then OPERATION_BONUS_SUM else 0 end) ,
 sum(case when ROW_TYPE = 'FIRE' then OPERATION_BONUS_SUM else 0 end) ,
 sum(case when ROW_TYPE = 'CASHBACK' then OPERATION_BONUS_SUM else 0 end) 
into
 GET_SUM_BONUSES.PLUS_BONUSES
,GET_SUM_BONUSES.ORDER_BONUSES
,GET_SUM_BONUSES.FIRE_BONUSES
,GET_SUM_BONUSES.CONVERSION_BONUSES
...


....
stax
1 июн 21, 13:06    [22329792]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить