powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Проблемка с select sum(case when... ) into OUT_PARAM
4 сообщений из 4, страница 1 из 1
Проблемка с select sum(case when... ) into OUT_PARAM
    #40074673
stackJava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
Пишу некую процедурку в Оракл:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
    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 при оформлении кода.
...
Рейтинг: 0 / 0
Проблемка с select sum(case when... ) into OUT_PARAM
    #40074677
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
  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, 
....
...
Рейтинг: 0 / 0
Проблемка с select sum(case when... ) into OUT_PARAM
    #40074679
oragraf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stackJava,

где ты такой синтаксис нашел?
...
Рейтинг: 0 / 0
Проблемка с select sum(case when... ) into OUT_PARAM
    #40074687
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stackJava,

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
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
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Проблемка с select sum(case when... ) into OUT_PARAM
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]