Thanks....that worked a treat! cheers,
Rob ________________________________ Von: salah jubeh <s_ju...@yahoo.com> An: Robert Buckley <robertdbuck...@yahoo.com>; "pgsql-general@postgresql.org" <pgsql-general@postgresql.org> Gesendet: 18:23 Montag, 3.September 2012 Betreff: Re: [GENERAL] Create loop in postgresql Hello Robert, I just gave an example and this also can be optimized . but let me first clarify one thing here. since you have the same behaviour for all values , there is no need to use case in the first place. So just drop it. I think below would be the correct syntax select name,ges_kw_zgb, (SELECT round(100 * (ges_kw_zgb / (select sum(ges_kw_zgb) From energie.tennet_auswertung_2010)),2)) FROM energie.tennet_auswertung_2010; Regards ________________________________ From: Robert Buckley <robertdbuck...@yahoo.com> To: salah jubeh <s_ju...@yahoo.com>; "pgsql-general@postgresql.org" <pgsql-general@postgresql.org> Sent: Monday, September 3, 2012 6:06 PM Subject: Re: [GENERAL] Create loop in postgresql this give an error. select name,ges_kw_zgb, SELECT round(100 * (ges_kw_zgb / (select sum(ges_kw_zgb) From energie.tennet_auswertung_2010)),2); ERROR: syntax error at or near "SELECT" LINE 2: select name,ges_kw_zgb, SELECT round(100 * (ges_kw_zgb / (se... ________________________________ Von: salah jubeh <s_ju...@yahoo.com> An: Robert Buckley <robertdbuck...@yahoo.com>; "pgsql-general@postgresql.org" <pgsql-general@postgresql.org> Gesendet: 17:45 Montag, 3.September 2012 Betreff: Re: [GENERAL] Create loop in postgresql I am wondering why do not you write it like this select name,ges_kw_zgb, select round(100 * (ges_kw_zgb / (select sum(ges_kw_zgb) From energie.tennet_auswertung_2010)),2) ...... Regards ________________________________ From: Robert Buckley <robertdbuck...@yahoo.com> To: "pgsql-general@postgresql.org" <pgsql-general@postgresql.org> Sent: Monday, September 3, 2012 5:30 PM Subject: [GENERAL] Create loop in postgresql Hi, I am trying to loop through the records in a table and update a column. I can do this with a case statement but I would like to simplify this to a simple loop statement. I can´t seem to work out how to do it though. Here is the case statement. select name,ges_kw_zgb, case When name='Bad Harzburg' then (select round(100 * (ges_kw_zgb / (select sum(ges_kw_zgb) From energie.tennet_auswertung_2010)),2)) When name='Braunlage' then (select round(100 * (ges_kw_zgb / (select sum(ges_kw_zgb) From energie.tennet_auswertung_2010)),2)) When name='Braunschweig' then (select round(100 * (ges_kw_zgb / (select sum(ges_kw_zgb) From energie.tennet_auswertung_2010)),2)) When name='Büddenstedt' then (select round(100 * (ges_kw_zgb / (select sum(ges_kw_zgb) From energie.tennet_auswertung_2010)),2)) End as z from energie.tennet_auswertung_2010 ; Instead of having to write the name variable in the function, I would just like to iterate through each record and execute the select round(100 * (ges_kw_zgb / (select sum(ges_kw_zgb) From energie.tennet_auswertung_2010)),2) command. If anyone can help I´d me grateful, cheers, Rob