Hola Igniris Pruebalo con string_agg así:
SELECT string_agg(distinct p.nombre,',') as prod, string_agg(distinct fa.forma,',') as forma FROM public.producto p INNER JOIN public.productoformaadquisclugar pfl ON (p.id = pfl.idproducto) INNER JOIN public.formadeadquisicion fa ON (pfl.idforma = fa.id) El 7 de octubre de 2015, 9:37 a. m., Igniris<ivaldi...@xetid.cu> escribió: > Buenos dias a todos > tengo un problema con la funcion LIST les pongo un ejemplo para ilustralo > mejor, tengo las siguientes tablas: > CREATE TABLE public.producto ( > id NUMERIC NOT NULL, > nombre TEXT, > CONSTRAINT producto_pkey PRIMARY KEY(id) > ) WITHOUT OIDS; > CREATE TABLE public.formadeadquisicion ( > id NUMERIC NOT NULL, > forma TEXT, > CONSTRAINT formadeadquisicion_pkey PRIMARY KEY(id) > ) WITHOUT OIDS; > CREATE TABLE public.productoformaadquisclugar ( > idproducto NUMERIC NOT NULL, > idforma NUMERIC NOT NULL, > idlugar NUMERIC NOT NULL, > CONSTRAINT productoformaadquisc_pkey PRIMARY KEY(idproducto, idforma, > idlugar) > ) WITHOUT OIDS; > > Ahora tengo una consulta para obtener los producto por su forma de > adquisicion donde necesito los nombres de los productos y las formas > concatenados, la consulta seria esta: > SELECT > LIST(p.nombre) as prod, > LIST(fa.forma)as forma > FROM > public.producto p > INNER JOIN public.productoformaadquisclugar pfl ON (p.id = > pfl.idproducto) > INNER JOIN public.formadeadquisicion fa ON (pfl.idforma = fa.id) > > el resultado de la consulta queda asi: > > > ahora el problema que estoy teniendo es que los usuarios necesitan que si > el producto se repite salga una sola vez, en este ejemplo el mango sale 2 > veces y necesito que salga solo una, la funcion list que estoy usando es > esta: > > CREATE FUNCTION comma_cat(text, text) RETURNS text > LANGUAGE sql > AS $_$select case > WHEN $2 is null or $2 = '' THEN $1 > WHEN $1 is null or $1 = '' THEN $2 > ELSE $1 || ', ' || $2 > END$_$; > CREATE AGGREGATE list ( > BASETYPE = text, > SFUNC = comma_cat, > STYPE = text, > INITCOND = '' > ); > > Muchas gracias por su ayuda, saludos > -- Cordialmente, Ing. Hellmuth I. Vargas S. Esp. Telemática y Negocios por Internet Oracle Database 10g Administrator Certified Associate EnterpriseDB Certified PostgreSQL 9.3 Associate