Bueno, necesitaba hacer un reporte para el SENASA en el que en cada columna haya un mes. Onda enero, febrero, etc. Entonces hice una pequeña función que me ayudará a hacerlo, es muestro como.
CREATE OR REPLACE FUNCTION meses(int,int,date,date) RETURNS int AS $ DECLARE resultado int; BEGIN if (date_part('month',$3) = $1 or (date_part('month',$4) = $1)) then resultado:=$2; else resultado:=0; end if; return resultado; end; $ LANGUAGE 'plpgsql' VOLATILE;
Esta función lo que hace es sumar el dato si la fecha correspone al mes indicado. En mi caso puede ser la fecha de control de foco o de cambio, por eso pregunta dos veces (los dos últimos cambios).
El select quedaría algo así:
select co.id_colonia,sum(meses(1,(picudos_rojos+picudos_grises),fech_ctrl,fech_cambio)) as n1, sum(meses(2,(picudos_rojos+picudos_grises),fech_ctrl,fech_cambio)) as n2, sum(meses(3,(picudos_rojos+picudos_grises),fech_ctrl,fech_cambio)) as n3, sum(meses(4,(picudos_rojos+picudos_grises),fech_ctrl,fech_cambio)) as n4... from ....
Espero que les sirva.
Saludos a todos.
Tags: postgres, postgresql, trigger