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

Откуда: Киев
Сообщений: 41
В ниже приведенной функции, в месте " and p.docindex = i " ничего не передается и функция выдает пустой результат. Как можно по-другому написать?
Задача: накопительная сумма, т.е. должна считаться сумма всех значений до docindex.

CREATE OR REPLACE FUNCTION cdsplan42sum(cdsP in VARCHAR2, colfield in NUMBER, eCounter in number, fcounter number, docindex number)
RETURN NUMBER
IS
colval NUMBER;
sumcolval NUMBER;
i number;
BEGIN
sumcolval := 0;
colval := 0;
for i in 0..docindex+1
LOOP
colval := 0;
select sum(sum(pv.columnvalue)) into colval
from HBICollectFields cf, hbipartiaraportval pv, hbipartiaraport p
where
cf.counter = pv.HBIFIELDS_ID
and p.entity_id= 42
and pv.PARENT_ID = p.counter
and p.otherhbi_id=eCounter
and p.hbiclient_id = fCounter
and pv.HBIFIELDS_ID = colfield
and p.docindex = i
and pv.columnname like cdsP
group by pv.columnvalue;
sumcolval := sumcolval + colval;
END LOOP;
return sumcolval;
END cdsplan42sum;
24 май 11, 13:14    [10699636]     Ответить | Цитировать Сообщить модератору
 Re: Функция, работа с циклом  [new]
ORA__SQL
Member

Откуда: Moscow
Сообщений: 1774
SL_Angel,
Может это
 p.docindex = nvl(i,p.docindex)
24 май 11, 13:22    [10699706]     Ответить | Цитировать Сообщить модератору
 Re: Функция, работа с циклом  [new]
SL_Angel
Member

Откуда: Киев
Сообщений: 41
ORA__SQL,

нет...

если я напишу p.docindex = docindex, то результат не пустой, но мне нужно от 1 до docindex.....
24 май 11, 13:32    [10699789]     Ответить | Цитировать Сообщить модератору
 Re: Функция, работа с циклом  [new]
ORA__SQL
Member

Откуда: Moscow
Сообщений: 1774
SL_Angel,
Складывается такое ощущение, что это можно решить одним запросом с аналитикой
24 май 11, 13:36    [10699831]     Ответить | Цитировать Сообщить модератору
 Re: Функция, работа с циклом  [new]
AmKad
Member

Откуда:
Сообщений: 5222
SL_Angel,

10142614
24 май 11, 13:38    [10699849]     Ответить | Цитировать Сообщить модератору
 Re: Функция, работа с циклом  [new]
SL_Angel
Member

Откуда: Киев
Сообщений: 41
AmKad,

я не знаю конечное docindex
24 май 11, 13:46    [10699903]     Ответить | Цитировать Сообщить модератору
 Re: Функция, работа с циклом  [new]
pit_alex
Member

Откуда: Kharkov
Сообщений: 686
SL_Angel,

excute immediate '....' into colval using i;
24 май 11, 14:00    [10700015]     Ответить | Цитировать Сообщить модератору
 Re: Функция, работа с циклом  [new]
tru55
Member

Откуда: СПб
Сообщений: 19790
pit_alex
SL_Angel,
excute immediate '....' into colval using i;

Чувствую, что это будет некоторым развитем топика "Просьба к участникам форума"
24 май 11, 14:14    [10700120]     Ответить | Цитировать Сообщить модератору
 Re: Функция, работа с циклом  [new]
SL_Angel
Member

Откуда: Киев
Сообщений: 41
tru55,

да что вы :)
24 май 11, 15:02    [10700525]     Ответить | Цитировать Сообщить модератору
 Re: Функция, работа с циклом  [new]
Тифа
Member

Откуда:
Сообщений: 151
ORA__SQL
SL_Angel,
Складывается такое ощущение, что это можно решить одним запросом с аналитикой


у меня почему то ощущение, что даже без аналитики, и как то очень смущает sum(sum(
24 май 11, 15:45    [10700903]     Ответить | Цитировать Сообщить модератору
 Re: Функция, работа с циклом  [new]
AmKad
Member

Откуда:
Сообщений: 5222
Пока наш Ангел не распишет подробно что ему надо, все так и будут делиться впечатлениями и ощущениями.
24 май 11, 15:48    [10700930]     Ответить | Цитировать Сообщить модератору
 Re: Функция, работа с циклом  [new]
ЕвгенВ
Member

Откуда:
Сообщений: 1
AmKad,
Вот эта строчка:

and pv.columnname like cdsP

Может нужно написать:
and UPPER(pv.columnname) like '%'||UPPER(cdsP)||'%'

?
24 май 11, 15:56    [10701003]     Ответить | Цитировать Сообщить модератору
 Re: Функция, работа с циклом  [new]
student1234
Guest
SL_Angel,

можит проблема в этом?
nvl(sum(sum(pv.columnvalue)),0) into colval
24 май 11, 16:20    [10701211]     Ответить | Цитировать Сообщить модератору
 Re: Функция, работа с циклом  [new]
SL_Angel
Member

Откуда: Киев
Сообщений: 41
Конкретно нужно разбивать значения по группам и найти накопительную сумму от 1 до docindex в каждой группе, т. е. для первого элемента будет выведено просто первое значение, для второго первое+второе, для n-го первое+второе+ ... +n-е.

Я уже нашла нужную функцию. Спасибо за помощь :)
sum( ... )
over (partition by ...
order by ... ) sumCol3_total

Только нужно в правильном порядке все пораспихивать и все будет ок :)
24 май 11, 16:42    [10701385]     Ответить | Цитировать Сообщить модератору
 Re: Функция, работа с циклом  [new]
SL_Angel
Member

Откуда: Киев
Сообщений: 41
ЕвгенВ
AmKad,
Вот эта строчка:

and pv.columnname like cdsP

Может нужно написать:
and UPPER(pv.columnname) like '%'||UPPER(cdsP)||'%'

?



с этой строчкой все нормально. без цикла все работает.....
24 май 11, 16:44    [10701411]     Ответить | Цитировать Сообщить модератору
 Re: Функция, работа с циклом  [new]
alex-ls
Member

Откуда: Иркутская обл - Пенза - Москва
Сообщений: 6914
select sum(sum(pv.columnvalue)) into colval
Бог любит троицу, попробуйте так!
select sum(sum(sum(pv.columnvalue))) into colval
24 май 11, 17:47    [10701877]     Ответить | Цитировать Сообщить модератору
 Re: Функция, работа с циклом  [new]
alex-ls
Member

Откуда: Иркутская обл - Пенза - Москва
Сообщений: 6914
Тифа
ORA__SQL
SL_Angel,
Складывается такое ощущение, что это можно решить одним запросом с аналитикой


у меня почему то ощущение, что даже без аналитики


p.docindex between 0 and Pdocindex + 1
24 май 11, 17:56    [10701945]     Ответить | Цитировать Сообщить модератору
 Re: Функция, работа с циклом  [new]
SL_Angel
Member

Откуда: Киев
Сообщений: 41
alex-ls,
я как-то об этом не подумала :)
спасибо
24 май 11, 18:24    [10702161]     Ответить | Цитировать Сообщить модератору
 Re: Функция, работа с циклом  [new]
SL_Angel
Member

Откуда: Киев
Сообщений: 41
все равно результат пустой....

я уже решила через аналитическую функцию
....
sum(Col3)
over (partition by NAME_zav, nampart, Fnamehbi order by NAME_zav, Fnamehbi, nampart, docindex, Col3) sumCol3_total,
.....
24 май 11, 18:29    [10702206]     Ответить | Цитировать Сообщить модератору
 Re: Функция, работа с циклом  [new]
alex-ls
Member

Откуда: Иркутская обл - Пенза - Москва
Сообщений: 6914
SL_Angel
все равно результат пустой....

потому что не надо функцию, просто запрос напишите с between
25 май 11, 13:38    [10706343]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить