Re: How can I re-use an expression in a SELECT? - Mailing list pgsql-novice

From Oliveiros d'Azevedo Cristina
Subject Re: How can I re-use an expression in a SELECT?
Date
Msg-id 13C88A99EA4A4130BEAE0A8E3007C35B@Moon
Whole thread Raw
In response to How can I re-use an expression in a SELECT?  (Rob Richardson <RDRichardson@rad-con.com>)
List pgsql-novice
U're welcome :-)
 
Best,
Oliveiros
----- Original Message -----
Sent: Friday, July 06, 2012 2:45 PM
Subject: Re: [NOVICE] How can I re-use an expression in a SELECT?

I understand.  Thanks very much!

 

RobR

 

From: Oliveiros d'Azevedo Cristina [mailto:oliveiros.cristina@marktest.pt]
Sent: Friday, July 06, 2012 9:30 AM
To: Rob Richardson; pgsql-novice@postgresql.org
Subject: Re: [NOVICE] How can I re-use an expression in a SELECT?

 

I don't know any way of doing it without using a sub-query...

 

SELECT heat_time, cool_time, fire_date + interval '1 minute' * heat time as end_of_fire

FROM (

select charge,

                case when c.rev_heat_time = 0 then c.pred_heat_time

                else c.rev_heat_time

                end as heat_time,

                case when c.rev_cool_time = 0 then c.pred_cool_time

                else c.rev_cool_time

                end as cool_time

from charge c

) subquery

 

Surely there are more elegant ways of doing this in later versions.

I'm still using 8.3 ...

 

Best,

Oliveiros

----- Original Message -----

Sent: Friday, July 06, 2012 2:04 PM

Subject: [NOVICE] How can I re-use an expression in a SELECT?

 

Greetings!

 

It seems to me, from my uneducated perspective, that if I have a calculated result with a name in a SELECT query, then I ought to be able to re-use the name later in the statement:

 

select charge,

                case when c.rev_heat_time = 0 then c.pred_heat_time

                else c.rev_heat_time

                end as heat_time,

                case when c.rev_cool_time = 0 then c.pred_cool_time

                else c.rev_cool_time

                end as cool_time,

                fire_date + interval '1 minute' * heat_time as end_of_fire

from charge c

 

Of course, that fails because heat_time cannot be used to calculate end_of_fire.  I would have to repeat the case statement that defines it instead.  How can I avoid repeating complicated pieces of SELECT queries like this?

 

Thanks very much!

 

RobR

pgsql-novice by date:

Previous
From: Rob Richardson
Date:
Subject: Re: How can I re-use an expression in a SELECT?
Next
From: Ioannis Anagnostopoulos
Date:
Subject: Recheck condition...