Как-нибудь можно обойтись без повторов вызова функции?
SELECT
a.param1
,b.param2
,c.param3
,param4 = fn(a.param1, b.param2, c.param3)
,param5 = (select e from table1 where d = fn(a.param1, b.param2, c.param3))
,param6 = (select f from table1 t1 left join table2 t2 on t1.g = t2.g where t1.d = fn(a.param1, b.param2, c.param3))
...
...
...
FROM
...
-- куча джойнов
---