você pode escrever uma função SQL que faça isso para você e use, por exemplo, os fornecidos com postgres-utils:
select
c.name as cust_name,
p.name as prod_name,
p.cost as prod_cost,
eval(
'select '||c.price_expression||' from product where id=:pid',
'{"{cost}",:pid}',
array[ p.cost, p.id ]
) as cust_cost
from product p, customer c
Mas é claro que pode ser lento, inseguro, você pode usar visualizações materializadas para armazená-lo em cache mais facilmente, etc. - veja o docu lá.