Re: rows -> array

From: Marcos Luis Ortiz Valmaseda <marcosluis2186(at)googlemail(dot)com>
To: Gerardo Herzig <gherzig(at)fmed(dot)uba(dot)ar>
Cc: Alvaro Herrera <alvherre(at)commandprompt(dot)com>, PostgreSQL <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: rows -> array
Date: 2010-11-27 02:45:39
Message-ID: AANLkTi=adt5wBHobGUtPD86UL5Vu1M+qU=TigWC-6dJR@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Pudieras crear entonces una funcion de agregado y usarla igual que se usa en
versiones posteriores a 8.4

CREATE AGGREGATE array_agg(anyelement) (
SFUNC=array_append,
STYPE=anyarray,
INITCOND=’{}’
);

Una tabla de ejemplo:
CREATE TABLE tes
(
id integer NOT NULL,
grp integer NOT NULL,
label text NOT NULL,
CONSTRAINT tes_pkey PRIMARY KEY (id)
) WITH (OIDS=FALSE);

Llenas la tabla con algunos datos:

id grp label
1 1 ABC
2 1 DEF
3 2 GHI
4 2 JKL

Y ejecutas una consulta de prueba:
SELECT grp,
array_agg(label)
FROM tes
GROUP BY grp;

Resultado:

grp array_agg
1 {ABC,DEF}
2 {GHI,JKL}

Luego puedes hacer algo como esto:
SELECT grp,
array_to_string( array_agg(label), ‘,’ )
FROM tes
GROUP BY grp;

Resultado:
grp array_to_string
1 ABC,DEF
2 GHI,JKL

El post original está aquí:
http://abdulyadi.wordpress.com/2008/11/24/array_agg-for-postgresql-version-84/

Saludos
El 26 de noviembre de 2010 17:20, Gerardo Herzig <gherzig(at)fmed(dot)uba(dot)ar>escribió:

> On 11/26/2010 06:51 PM, Alvaro Herrera wrote:
> > Excerpts from Gerardo Herzig's message of vie nov 26 17:33:40 -0300 2010:
> >> Hola chicos: Estoy buscando, en 8.3, algo como lo siguiente:
> >>
> >> Una funcion que me permita convertir un row (resultante de una funcion
> >> determinada) y me devuelva un array con los valores de las columnas
> >> (casteado, digamos, a text), y no logro dar con la tecla.
> >>
> >> Lo ideal seria que el recorset que reciba esta funcion pueda ser
> >> generico, asi puedo utilizarlo para 'arraysear' resultados que provienen
> >> de diferentes funciones. Se entiende?
> >
> > Instala contrib/hstore y examina las funciones que provee. Al menos en
> > 9.0 puedes construir lo que quieres desde las piezas que hay ahí.
> >
> > En 8.3 hstore es harto más primitivo, pero quizás se pueda de todas
> formas.
> > Si no, quizás puedas hacer un "backport" del hstore de 9.0 a 8.3 (creo
> > que existe en pgfoundry, no estoy seguro).
> >
>
> Gracias como siempre Alvaro, pero tengo limitaciones a la hora de
> instalar programas 'auxiliares'. Incluso tengo limitantes de no usar
> plpython, solo sql y pl/sql.
>
> Saludos.
> Gerardo
> -
> Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda(at)postgresql(dot)org
> )
> Para cambiar tu suscripción:
> http://www.postgresql.org/mailpref/pgsql-es-ayuda
>

--
Ing. Marcos Luís Ortíz Valmaseda
Data Lover(RDBMS and NOSQL Movement) && System Engineer

http://it.toolbox.com/blogs/sql-apprentice
http://www.linkedin.com/in/marcosluis2186/
http://www.github.com/marcosluis2186

Centro de Tecnologías de Gestión de Datos (DATEC)
Linux User # 418229

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Yadira Lizama Mue 2010-11-29 22:17:41 escape
Previous Message Alvaro Herrera 2010-11-26 21:51:53 Re: rows -> array