Creo que podrías escribirlo asi:

select 
    col_1,
    col_2,
    fn_funciondeusuario(parametros) col_result,
    case when fn_funciondeusuario(parametros) > 0 then 'L' else 'D' END col_4
from
    tablas;


o asi:

select col_1,
    col_2,
    col_result,
    case when col_result > 0 then 'L' else 'D' END col_4 
(select 
    col_1,
    col_2,
    fn_funciondeusuario(parametros) col_result,
from

    tablas) t;

Es más veloz la segunda.


>________________________________
> De: Guillermo E. Villanueva <guillermo...@gmail.com>
>Para: pgsql-es-ayuda <pgsql-es-ayuda@postgresql.org> 
>Enviado: Miércoles 6 de febrero de 2013 9:39
>Asunto: [pgsql-es-ayuda] Uso de resultado de función en la misma proyección o 
>en el filtro
> 
>
>Buenos días, gente hay posibilidad de utilizar el resultado de una función o 
>de un cálculo en la misma consulta para la misma tupla?
>por ejemplo
>select 
>    col_1,
>    col_2,
>    fn_funciondeusuario(parametros) col_result,
>    case when col_result > 0 then 'L' else 'D' END col_4
>from
>    tablas;
>
>
>Si lo ejecuto así nomas me dice que no existe la columna col_result, lo que yo 
>quiero es que no tenga que calcular 2 veces lo mismo. Es posible de alguna 
>manera? 
>
>
>Desde ya muchas gracias!
>
>
>Guillermo
>
>
>
>
>
>
>
>
>
>
>Guillermo Villanueva
>
>
>

Responder a