Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Firebird, InterBase Новый топик    Ответить
 Select с попаданием в интервал.  [new]
Sashaua
Member

Откуда: Kiev
Сообщений: 169
Есть таблица exchange_rate где устанавливается курс для валют.
IDDATEID_CURRENCYMIN_EXHANGE_RATEMAX_EXHANGE_RATEID_STATUSID_USER
11.08.201922626.5052
21.08.201933031.5052
32.08.201922626.5052
42.08.201933031.5052
53.08.201922626.5152
63.08.201933031.5152

Где ID_STATUS
0- неактивный курс
1- активный курс

После некоторого изменения в бизнес логике процессов, нет необходимости в установке курса каждый день, необходимо иметь активный курс ID_STATUS =1.
И хочется отойти от ежедневной установки курса
Например:
IDDATEID_CURRENCYMIN_EXHANGE_RATEMAX_EXHANGE_RATEID_STATUSID_USER
32.08.201922626.5052
42.08.201933031.5152
527.08.201922626.9128

Мы понимаем что для ID_CURRENCY=2 в период с 2.08.2019 по 27.08.2019 MAX_EXHANGE_RATE=26.5.
В друг прилетит хотелка в виде "мы хотим знать какой был курс для ID_CURRENCY=2 15.08.2019". Можно ли выборкой получить курс который действовал для валюты когда когда даты в таблице не будет для этой валюты?
понимаю что как то карявенько сформулировано.
27 авг 19, 15:17    [21958391]     Ответить | Цитировать Сообщить модератору
 Re: Select с попаданием в интервал.  [new]
982183
Member

Откуда: VL
Сообщений: 3107
Sashaua
Можно ли выборкой получить курс который действовал для валюты когда когда даты в таблице не будет для этой валюты?


Можно ли выборкой получить курс на дату, а в случае его отсутствия ближайший "до" и "после" запрашиваемой даты.
27 авг 19, 15:20    [21958392]     Ответить | Цитировать Сообщить модератору
 Re: Select с попаданием в интервал.  [new]
982183
Member

Откуда: VL
Сообщений: 3107
"который действовал " - значит "ДО"
27 авг 19, 15:29    [21958402]     Ответить | Цитировать Сообщить модератору
 Re: Select с попаданием в интервал.  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9831
Sashaua,

select MIN_EXHANGE_RATE, MAX_EXHANGE_RATE	-- ну и что там ещё надо
from exchange_rate
where ID_CURRENCY=2 
  and "DATE" <= date'15.08.2019'
  and ID_STATUS = 1 
order by bydate desc
fetch first rows only
27 авг 19, 15:32    [21958406]     Ответить | Цитировать Сообщить модератору
 Re: Select с попаданием в интервал.  [new]
KreatorXXI
Member

Откуда: Москва
Сообщений: 783
Sashaua,

Как-то так:
...
where a."Date"<=CurrentDate
order by a."Date" desc
rows 1


Только надо помнить, что индексы в ФБ однонаправленные. Может понадобиться создание индекса по "Date" с сортировкой по убыванию.
27 авг 19, 15:35    [21958408]     Ответить | Цитировать Сообщить модератору
Все форумы / Firebird, InterBase Ответить