Re: Reuse temporary calculation results in an SQL update query

Поиск
Список
Период
Сортировка
От Thomas Kellerer
Тема Re: Reuse temporary calculation results in an SQL update query
Дата
Msg-id k46k39$5th$1@ger.gmane.org
обсуждение исходный текст
Ответ на Reuse temporary calculation results in an SQL update query  (Matthias Nagel <matthias.h.nagel@gmail.com>)
Список pgsql-sql
Matthias Nagel wrote on 29.09.2012 12:49:
> Hello,
>
> is there any way how one can store the result of a time-consuming calculation if this result is needed more
>than once in an SQL update query? This solution might be PostgreSQL specific and not standard SQL compliant.
>  Here is an example of what I want:
>
> UPDATE table1 SET
>     StartTime = 'time consuming calculation 1',
>     StopTime = 'time consuming calculation 2',
>     Duration = 'time consuming calculation 2' - 'time consuming calculation 1'
> WHERE foo;
>
> It would be nice, if I could use the "new" start and stop time to calculate the duration time.
>First of all it would make the SQL statement faster and secondly much more cleaner and easily to understand.


Something like:

with my_calc as (    select pk,           time_consuming_calculation_1 as calc1,           time_consuming_calculation_2
ascalc2    from foo
 
)
update foo  set startTime = my_calc.calc1,      stopTime = my_calc.calc2,      duration = my_calc.calc2 - calc1
where foo.pk = my_calc.pk;

http://www.postgresql.org/docs/current/static/queries-with.html#QUERIES-WITH-MODIFYING





В списке pgsql-sql по дате отправления:

Предыдущее
От: Jasen Betts
Дата:
Сообщение: Re: Reuse temporary calculation results in an SQL update query
Следующее
От: Robert Buck
Дата:
Сообщение: [noob] How to optimize this double pivot query?