Hola amigos, hace rato no hago PS y solo lo habia hecho en Oracle y Mysql no en POstgresql, así que ustedes que son los expertos espero pueda ayudarme, tengo el siguiente SP:
CREATE OR REPLACE FUNCTION get_cost_aa(integer, integer, integer) RETURNS TABLE(name VARCHAR, id INTEGER, provider_id INTEGER, provider_name VARCHAR, mismo_minutos INTEGER, mismo_costo INTEGER, otros_minutos INTEGER, otros_costo INTEGER, fijo_minutos INTEGER, fijo_costo INTEGER, todos_minutos INTEGER, todos_costo INTEGER ) AS $body$ DECLARE mins_operator ALIAS FOR $1; mins_landline ALIAS FOR $2; mins_other ALIAS FOR $3; otros CONSTANT integer :=677; fijo CONSTANT integer :=678; todos CONSTANT integer :=676; BEGIN RETURN QUERY SELECT Plan.name, Plan.id, Plan.provider_id, (SELECT d.name FROM clients_mobileprovider as d WHERE d.id=Plan.provider_id) As provider_name, (SELECT m.minutes from products_mobileproviderplanvoicerate as m WHERE m.provider_id=Plan.provider_id AND m.plan_id=Plan.id) as Mismo_Minutos, (SELECT n.additional_cost from products_mobileproviderplanvoicerate AS n WHERE n.provider_id=Plan.provider_id AND n.plan_id=Plan.id) as Mismo_Costo, (SELECT x.minutes from products_mobileproviderplanvoicerate AS x WHERE x.provider_id=otros AND x.plan_id=Plan.id) as Otros_Minutos, (SELECT z.additional_cost from products_mobileproviderplanvoicerate as z WHERE z.provider_id=otros AND z.plan_id=Plan.id) as Otros_Costo, (SELECT k.minutes from products_mobileproviderplanvoicerate AS k WHERE k.provider_id=fijo AND k.plan_id=Plan.id) as Fijo_Minutos, (SELECT r.additional_cost from products_mobileproviderplanvoicerate as r WHERE r.provider_id=fijo AND r.plan_id=Plan.id) as Fijo_Costo, (SELECT j.minutes from products_mobileproviderplanvoicerate AS j WHERE j.provider_id=todos AND j.plan_id=Plan.id) as Todos_Minutos, (SELECT w.additional_cost from products_mobileproviderplanvoicerate AS w WHERE w.provider_id=todos AND w.plan_id=Plan.id) as Todos_Costo FROM products_mobileplan as Plan; END; $body$ LANGUAGE plpgsql; ------- Este PS recibe tres argumentos, esos tres argumentos quiero sumarlos en cualquiera de las columnas[fijo_costo, todos_minutos, etc] (subconsultas) dependiendo de unos condicionales que aun no he puesto por ejemplo que si no posee [mismo_costo] sumar argumento X, estas sumas las haría sobre cada uno de los rows de esa query sin ningún Update ni molificación, retornaría la tabla con esos cálculos llamese no se en Postgresql como tabla virtual o tabla temporal, Alguien me orienta un poco?, Gracias de Antemano. Saludo.