Я хотел бы сделать что-то вроде этого:
CNT=2;
//[edit]
select avg(price) from (
select first :CNT p.Price
from Price p
order by p.Date desc
);
Это не работает, Firebird не допускает :cnt
в качестве параметра для FIRST. Мне нужно усреднить первые самые новые цены CNT. Число 2 меняется, поэтому его нельзя жестко закодировать.
Это может быть разбито на цикл FOR SELECT и прервано при достижении счета. Хотя это лучший способ? Можно ли это сделать в одном операторе SQL?
Создание SQL в виде строки и его запуск тоже не лучший вариант. Важно, чтобы база данных скомпилировала мой оператор SQL.