Как в 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. | 
			 
		  | 
	 
	
		  | 
	 
	
		 | 
	 
 
  
	 
	    
	   | 
	
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
  | 
   
 
		 |