Thanks....that worked a treat! cheers,
Rob ________________________________ Von: salah jubeh <[email protected]> An: Robert Buckley <[email protected]>; "[email protected]" <[email protected]> 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 <[email protected]> To: salah jubeh <[email protected]>; "[email protected]" <[email protected]> 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 <[email protected]> An: Robert Buckley <[email protected]>; "[email protected]" <[email protected]> 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 <[email protected]> To: "[email protected]" <[email protected]> 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
