Re: Concatenar datos

Lists: pgsql-es-ayuda
From: Sergio Valdes Hurtado <svh(dot)pgsql(at)gmail(dot)com>
To: Lista PostgreSql <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Concatenar datos
Date: 2009-08-14 15:26:59
Message-ID: 9032d01f0908140826m52fa5862nb39802588b707fd2@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Estimados,

tengo la siguiente consulta que muestra un desarrollo de cuotas por pagar:
SELECT id_cuota, id_rex, num_reso as varchar, id_reg,
id_prov, id_com, cod_com, ley, num_cuota,
monto_cuota, mes_cuota, agno_cuota
FROM public.cuotas;

luego tengo la siguiente consulta, que me suma el monto total de las
cuotas de cada mes, para cada una de las comunas(campo cod_com):
SELECT cod_com, agno_cuota, mes_cuota, sum(monto_cuota) total_a_descto
FROM public.cuotas
group by com, cod_com, agno_cuota, mes_cuota;

Mi problema es que si ustedes se fijan en la primera consulta hay un
campo llamado ley, que es un varchar y lo que necesito es que por cada
fila del resumen mensual de cuotas me muestre todas las leyes que
están en ese resumen.
Por ejemplo que me diera un resultado como este:
1212;2009;8;526800;ley 1 - ley 2 - ley 3

lo que indica que la Comuna 1212 para el Año 2009 y el mes 8 tiene
tres cuotas (registros) que suman 526800, una por la "ley 1", otra por
la "ley 2" y la última por la "ley 3" .

¿Se podrá hacer un informe como el que necesito?

saludos y gracias de antemano


From: Juan Romero <jgromero(at)gmail(dot)com>
To: Sergio Valdes Hurtado <svh(dot)pgsql(at)gmail(dot)com>
Cc: Lista PostgreSql <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Concatenar datos
Date: 2009-08-16 15:04:54
Message-ID: 389204A5-AFFA-41F8-A736-135C82F10D7B@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda


On Aug 14, 2009, at 10:26 AM, Sergio Valdes Hurtado wrote:

> Estimados,
>
> tengo la siguiente consulta que muestra un desarrollo de cuotas por
> pagar:
> SELECT id_cuota, id_rex, num_reso as varchar, id_reg,
> id_prov, id_com, cod_com, ley, num_cuota,
> monto_cuota, mes_cuota, agno_cuota
> FROM public.cuotas;
>
>
> luego tengo la siguiente consulta, que me suma el monto total de las
> cuotas de cada mes, para cada una de las comunas(campo cod_com):
> SELECT cod_com, agno_cuota, mes_cuota, sum(monto_cuota)
> total_a_descto
> FROM public.cuotas
> group by com, cod_com, agno_cuota, mes_cuota;
>
> Mi problema es que si ustedes se fijan en la primera consulta hay un
> campo llamado ley, que es un varchar y lo que necesito es que por cada
> fila del resumen mensual de cuotas me muestre todas las leyes que
> están en ese resumen.
> Por ejemplo que me diera un resultado como este:
> 1212;2009;8;526800;ley 1 - ley 2 - ley 3
>
> lo que indica que la Comuna 1212 para el Año 2009 y el mes 8 tiene
> tres cuotas (registros) que suman 526800, una por la "ley 1", otra por
> la "ley 2" y la última por la "ley 3" .
>
> ¿Se podrá hacer un informe como el que necesito?
>

Si. Utilizando funciones agregadas[1]. En la lista hace algun tiempo
Alvaro Herrera dejo una funcion que, me parece, hace justamente eso
que necesitas[2]

[1] http://www.postgresql.org/docs/8.4/interactive/sql-createaggregate.html
[2] http://archives.postgresql.org/pgsql-es-ayuda/2008-03/msg00466.php

Saludos,

Juan Gabriel Romero
jgromero(at)gmail(dot)com
Colombia


From: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
To: Juan Romero <jgromero(at)gmail(dot)com>
Cc: Sergio Valdes Hurtado <svh(dot)pgsql(at)gmail(dot)com>, Lista PostgreSql <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Concatenar datos
Date: 2009-08-17 00:14:21
Message-ID: 20090817001421.GD24620@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Juan Romero escribió:

> Si. Utilizando funciones agregadas[1]. En la lista hace algun tiempo
> Alvaro Herrera dejo una funcion que, me parece, hace justamente eso
> que necesitas[2]

Ese es un mecanismo que quedó obsoleto desde que se puede usar
array_agg. En ese mismo thread creo que alguien explicó cómo se hacía.

--
Alvaro Herrera Valdivia, Chile ICBM: S 39º 48' 55.3", W 73º 15' 24.7"
"Para tener más hay que desear menos"


From: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
To: Juan Romero <jgromero(at)gmail(dot)com>
Cc: Sergio Valdes Hurtado <svh(dot)pgsql(at)gmail(dot)com>, Lista PostgreSql <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Concatenar datos
Date: 2009-08-17 00:22:03
Message-ID: 20090817002202.GE24620@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Alvaro Herrera escribió:
> Juan Romero escribió:
>
> > Si. Utilizando funciones agregadas[1]. En la lista hace algun tiempo
> > Alvaro Herrera dejo una funcion que, me parece, hace justamente eso
> > que necesitas[2]
>
> Ese es un mecanismo que quedó obsoleto desde que se puede usar
> array_agg. En ese mismo thread creo que alguien explicó cómo se hacía.

No lo vi así que aquí lo pongo:

alvherre=# create table test (a int);
iCREATE TABLE
alvherre=# insert into test values (1), (2), (3);
INSERT 0 3
alvherre=# select array_agg(a) from test;
array_agg
-----------
{1,2,3}
(1 fila)

alvherre=# select array_to_string(array_agg(a), ' - ') from test;
array_to_string
-----------------
1 - 2 - 3
(1 fila)

--
Alvaro Herrera http://www.advogato.org/person/alvherre
"Ah, spring... when a young penguin's fancy lightly turns to thoughts of ...
Beta testing!" (Fedora 9 beta announcement)


From: Sergio Valdes Hurtado <svh(dot)pgsql(at)gmail(dot)com>
To: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
Cc: Juan Romero <jgromero(at)gmail(dot)com>, Lista PostgreSql <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Concatenar datos
Date: 2009-08-17 13:14:28
Message-ID: 9032d01f0908170614q1550608ai8ace7976b559638@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Gracias a todos por su ayuda, ya que es exactamente lo que necesitaba.

saludos,

El 16 de agosto de 2009 20:22, Alvaro Herrera<alvherre(at)alvh(dot)no-ip(dot)org> escribió:
> Alvaro Herrera escribió:
>> Juan Romero escribió:
>>
>> > Si. Utilizando funciones agregadas[1]. En la lista hace algun tiempo
>> > Alvaro Herrera dejo una funcion que, me parece, hace justamente eso
>> > que necesitas[2]
>>
>> Ese es un mecanismo que quedó obsoleto desde que se puede usar
>> array_agg.  En ese mismo thread creo que alguien explicó cómo se hacía.
>
> No lo vi así que aquí lo pongo:
>
> alvherre=# create table test (a int);
> iCREATE TABLE
> alvherre=# insert into test values (1), (2), (3);
> INSERT 0 3
> alvherre=# select array_agg(a) from test;
>  array_agg
> -----------
>  {1,2,3}
> (1 fila)
>
> alvherre=# select array_to_string(array_agg(a), ' - ') from test;
>  array_to_string
> -----------------
>  1 - 2 - 3
> (1 fila)
>
>
> --
> Alvaro Herrera                        http://www.advogato.org/person/alvherre
> "Ah, spring... when a young penguin's fancy lightly turns to thoughts of ...
> Beta testing!"                                  (Fedora 9 beta announcement)
>


From: Edwin Quijada <listas_quijada(at)hotmail(dot)com>
To: <svh(dot)pgsql(at)gmail(dot)com>, <alvherre(at)alvh(dot)no-ip(dot)org>
Cc: <jgromero(at)gmail(dot)com>, <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: RE: Concatenar datos
Date: 2009-08-17 19:58:37
Message-ID: BLU137-W70DF959A3A51F9B26BC83E3010@phx.gbl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda


array_agg solo se puede usar en 8.4?

*-------------------------------------------------------*
*-Edwin Quijada
*-Developer DataBase
*-JQ Microsistemas

*-Soporte PostgreSQL

*-www.jqmicrosistemas.com
*-809-849-8087
*-------------------------------------------------------*

----------------------------------------
> Date: Mon, 17 Aug 2009 09:14:28 -0400
> Subject: Re: [pgsql-es-ayuda] Concatenar datos
> From: svh(dot)pgsql(at)gmail(dot)com
> To: alvherre(at)alvh(dot)no-ip(dot)org
> CC: jgromero(at)gmail(dot)com; pgsql-es-ayuda(at)postgresql(dot)org
>
> Gracias a todos por su ayuda, ya que es exactamente lo que necesitaba.
>
> saludos,
>
> El 16 de agosto de 2009 20:22, Alvaro Herrera escribió:
>> Alvaro Herrera escribió:
>>> Juan Romero escribió:
>>>
>>>> Si. Utilizando funciones agregadas[1]. En la lista hace algun tiempo
>>>> Alvaro Herrera dejo una funcion que, me parece, hace justamente eso
>>>> que necesitas[2]
>>>
>>> Ese es un mecanismo que quedó obsoleto desde que se puede usar
>>> array_agg. En ese mismo thread creo que alguien explicó cómo se hacía.
>>
>> No lo vi así que aquí lo pongo:
>>
>> alvherre=# create table test (a int);
>> iCREATE TABLE
>> alvherre=# insert into test values (1), (2), (3);
>> INSERT 0 3
>> alvherre=# select array_agg(a) from test;
>> array_agg
>> -----------
>> {1,2,3}
>> (1 fila)
>>
>> alvherre=# select array_to_string(array_agg(a), ' - ') from test;
>> array_to_string
>> -----------------
>> 1 - 2 - 3
>> (1 fila)
>>
>>
>> --
>> Alvaro Herrera http://www.advogato.org/person/alvherre
>> "Ah, spring... when a young penguin's fancy lightly turns to thoughts of ...
>> Beta testing!" (Fedora 9 beta announcement)
>>
> --
> TIP 5: ¿Has leído nuestro extenso FAQ?
> http://www.postgresql.org/docs/faqs.FAQ.html
_________________________________________________________________