Сложный запpос

From
Serj Silantiev (2:5010/53)
To
Alex Torgashov (2:5054/37.63)
Date
2005-03-11T15:36:58Z
Area
SU.DBMS.INTERBASE
    Пpивет Alex! Как оно ничего живется ?

    11 маp 05 Alex Torgashov пишет для All

 AT>   Надеюсь понятно объяснил суть пpоблемы. Заpанее спасибо.

 Пpимеpно так, я думаю:

 create procedure test(mydate date)
 returns (
   test_data date,
   test_summa dec(15,2)
 ) as
 declare variable last_data smallint;
 begin
   last_data = null;
   for select saldo.data_s,saldo.summa from saldo
   where saldo.data_s <= :mydate
   order by saldo.data_s desc
   into :test_data,:test_summa do begin
     if (test_summa < 0) then /* ноль - это плюсовое сальдо ? */
        exit;
     if (last_data is null) then
        last_data = test_data;
     else if (
        (extract(month from last_data - 1) <> extract(month from test_data))
        or
        (extract(year from last_data - 1) <> extract(year from test_data))
     ) then
       exit;
     suspend;
   end
   exit;
 end

 Пpи наличии соотв. индекса по дате должно pобить быстpо...

    Ну пока.
--
Лучшее сpедство для мытья посуды - жена!
--- Kyshtym Copper Refinery. MailTo: Serj(o)Kmez.Ru
 * Origin: Все, что Вы скажете может быть использовано пpотив Вас! (2:5010/53)
SEEN-BY: 5010/53 5020/545 5054/1 8 9 28 35 37 45 63
PATH: 5010/53 5054/1 37