Решил вот поэкспериментировать с get_context/set_context. Такой вот запрос
select rdb$get_context('USER_TRANSACTION','row') as rownum, plat_id,
rdb$set_context('USER_TRANSACTION','row',
cast(rdb$get_context('USER_TRANSACTION','row') as integer)+1) X
from app_plateg
where plat_date>:DATE_FROM
отрабатывает нормально.
Оборачиваем его
select A.rownum, A.plat_id from (
select rdb$get_context('USER_TRANSACTION','row') as rownum, plat_id,
rdb$set_context('USER_TRANSACTION','row',
cast(rdb$get_context('USER_TRANSACTION','row') as integer)+1) X
from app_plateg
where plat_date>:DATE_FROM) A
Похоже, оптимизатор умничает, и так как поле 3 вовне не выводится, то
оно и не вычисляется. Если поле во внешнем запросе добавить, оно будет
вычисляться. Кроме того, если у поля нет алиаса, то даже если оно не
используется во внешнем запросе, получим COLUMN 3 is specified without
a name.