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
_________________________________________________________________