Как в PL/PLUS использовать аналитические функции?
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
mx1234567 Участник со стажем
Вступление в Клуб: 18.11.2010
|
Ср Май 14, 2014 11:44  Как в PL/PLUS использовать аналитические функции? |
|
Полезность: Нет оценки
|
Как в PL/PLUS использовать аналитические функции, например LAG?
Надо даты окончания откорректировать у доп. свойств договоров.
Пока написал код, который только последнюю строку может корректировать. Хочется добавить LAG и пройтись по всем.
Попробовал вот так, не получилось:
Код: |
for
(
select x
(
x : q_x, x.[DATE_BEG] : q_DATE_BEG, x.[DATE_END] : q_DATE_END
--На это ругается
-- begin pl/sql
,lag(x.[DATE_BEG], 1, null) over (order by x.[DATE_BEG]) : q_DATE_BEG_1
-- end pl/sql
{
,lag(a1.C_DATE_BEG, 1, null) over (order by a1.C_DATE_BEG) q_DATE_BEG_2
}
)
in prop_ref%collection
where x != prop_ref
and x.[GROUP_PROP] = P_GROUP_PROP
and nvl(x.[PROP], -1) = nvl(P_PROP, -1)
and x.[DATE_BEG] < P_DATE_BEG
order by x.[DATE_BEG] desc
)
loop
if x.q_DATE_END is null then
x.q_x.[DATE_END] := P_DATE_BEG-1;
stdio.put_line_buf('Для свойства: '||P_GROUP_PROP.[NAME]||' с датой '||to_char(x.q_DATE_BEG,'DD/MM/YYYY')||' проставлена дата окончания '||to_char(P_DATE_BEG-1,'DD/MM/YYYY'));
exit;
end if;
end loop;
| [/code] |
|
 |
Amper Профи
Вступление в Клуб: 29.10.2010
|
Ср Май 14, 2014 12:56   |
|
Полезность: 2
|
Для этого используется функция analytic, формат такой: Код: | analytic(lag(x.[DATE_BEG], 1, null), 'over (order by [1]])', x.[DATE_BEG]) |
Примеров использования в IBSO можно найти множество по слову ANALYTIC. |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|