Мне нужно, чтобы работало быстро с выборкой по периоду.
ХП не подходит, т.к. это будет использоваться в редактируемых представлениях (updatable views).
Практическая польза - получение длительности действия каждого значения (цены в данном случае) для дальнейших расчетов.
Что касается метода, предложенного
Brainenjii, то не факт, что даты будут вставляться последовательно.
- Код: Выделить всё
SELECT
t1.FPrice,
t1.FDate,
(SELECT MIN(FDate) FROM TBL_PRICE AS t2 WHERE t1.FDate < t2.FDate)
FROM TBL_PRICE as t1
WHERE t1.FDate BETWEEN '01.01.2007' AND '01.09.2007'
Здесь наверняка все дело в порядке выполнения запроса - нужно заставить огнептицу сначала ограничить выборку по периоду (WHERE t1.FDate BETWEEN '01.01.2007' AND '01.09.2007'), а уж затем приступать к выборке результирующих полей. Для этого, как я понимаю, есть (по крайней мере в 2.0+) ключевое слово PLAN, вот только как им пользоваться - непонятно.
Вот какой план показывает IBExpert:
- Код: Выделить всё
План
PLAN (T2 ORDER TBL_PRICE_IDX2 INDEX (TBL_PRICE_IDX2))
PLAN (T1 INDEX (TBL_PRICE_IDX2))
Адаптированный план
PLAN (T2 ORDER TBL_PRICE_IDX2 INDEX (TBL_PRICE_IDX2)) PLAN (T1 INDEX (TBL_PRICE_IDX2))