2013/4/8 Marcelo da Silva <[email protected]>:
> Pessoal estou tentando concatenar numa string o resultado de um select:
>
> email1, email2, email3, etc
>
> Sei pouca coisa em termos de funções em Postgres, criei a função abaixo pra
> isso.
> Mas está faltando o principal que é concatenar, vejam:
>
> CREATE OR REPLACE FUNCTION femailsclientes(integer)
>   RETURNS character varying AS
> $BODY$
>   declare
>     result character varying;
> begin
>
>     for result in select distinct email from mv_clientes_emails where
> (cod_id = $1)
>     loop
>       result = result || ',' || result;
>     end loop;
>   return result;
>
> end;
> $BODY$
>   LANGUAGE plpgsql VOLATILE
>   COST 100;
> ALTER FUNCTION femailsclientes(integer)
>   OWNER TO postgres;


Marcelo... você não mencionou a versão do Postgres, mas se for 9.0 ou
superior, basta usar a função string_agg [1].

Mais ou menos assim:

Select cod_id,
string_agg(email, ', ')
from mv_clientes_emails
group by cod_id;

1 - http://www.postgresql.org/docs/9.0/static/functions-aggregate.html

--
Marcone Peres - DBA
http://www.linkedin.com/in/marconeperes
@marconeperes
(61) 8146-0028
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a