Using the the sub-select is one way, but there is another way.
If the function can be declared as strict or immutable the you can call it
as many times as you like in a single transaction and it will only be
evaluated once. As far as I know this does work as advertised.
Check the SQL commands reference section of the manual for CREATE FUNCTION
Regards
Iain
----- Original Message -----
From: "Rod Taylor" <pg@rbt.ca>
To: "Philippe Lang" <philippe.lang@attiksystem.ch>
Cc: <pgsql-sql@postgresql.org>
Sent: Wednesday, October 20, 2004 10:05 PM
Subject: Re: [SQL] Reuse previously calculated column in sql query?
> On Wed, 2004-10-20 at 08:50, Philippe Lang wrote:
>> Hello,
>>
>> Is it possible to reuse a previously calculated column in a following
>> column, like:
>
> SELECT col1
> , col2
> , col2 * 0.75 AS col3
> FROM (SELECT foo.val1 AS col1
> , long_calculation(foo.val1) AS col2
> FROM foo) AS tab;
>
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 5: Have you checked our extensive FAQ?
>
> http://www.postgresql.org/docs/faqs/FAQ.html