hola
Código SQL
[-]
select a.cve_producto,a.fecha_distribucion,a.cve_cliente,
(select precio_nuevo from PRODUCTO_DISTRIBUIDO c
where c.cve_tipo_cliente=b.cve_tipo_cliente
and c.cve_producto a.cve_producto and fecha_aplicacion_nvo_precio=
(select min(fecha_aplicacion_nvo_precio) from PRODUCTO_DISTRIBUIDO c
where c.cve_tipo_cliente=b.cve_tipo_cliente
and c.cve_producto a.cve_producto and fecha_aplicacion_nvo_precio>=a.fecha_distribucion)) precio
from PRODUCTO_PRECIO a
join CLIENTE b on b.cve_cliente=a.cve_cliente
Esto te dara el precio de la fecha mas cerca por la parte superior de la fecha de distribucion
Si quieres otra cosa solo debes jugar con el min i con el >
Espero haberte entendido , no se si firebird 1.5 permite selects anidadas el 2.0 y el 2.5 seguro
Saludos