Сложный зап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