Re[2]: consulta sobre sum() en grupo

From: Miguel Bernilla Sánchez <mbernilla(at)sedapal(dot)com(dot)pe>
To: "Miguel Huerta" <hgmiguel(at)gmail(dot)com>
Cc: "Luis Guevara" <luis(dot)a(dot)guevara(at)gmail(dot)com>, PostgreSQL-foro <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re[2]: consulta sobre sum() en grupo
Date: 2007-02-14 20:16:32
Message-ID: 109293938.20070214151632@sedapal.com.pe
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

ahi va....

select v2.dni,sum(v2.ingresos),sum(v2.egresos)
from (select v.dni as dni,
case when v.tipo = 1 then v.importe end as ingresos,
case when v.tipo = 2 then v.importe end as egresos
from (select dni,tipo,sum(importe) as importe from tablax
group by dni,tipo) v) v2
group by v2.dni;

============
Con fecha Miércoles, 14 de Febrero de 2007, 03:00:32 p.m., escribió:

> On 2/14/07, Luis Guevara <luis(dot)a(dot)guevara(at)gmail(dot)com> wrote:
> Al aplicar esa consulta que me sugieren ambos ( que es la misma o
> parecida a la que estoy probando), obtengo el siguiente resultado:

> dni            ingresos       egresos
> 11111111       0                   70
> 11111111      500                 0
> 22222222      30                   0
> 22222222      0                    20

> Me parce que estas haciendo group by dni,tipo.
> Deja solo GROUP BY dni
>
> el cual no es el desado.
> Lo que deseo es obtener esto:

> dni             ingresos      egresos
> 22222222       30               20
> 11111111       500             70

> Me parece que la unica solución para llegar a esto, seria aplicar otra consulta
> con group by dni. ¿ no hay otra solución para obtener el resultado
> tan solo con la primera consulta ?

> Gracias

> El día 14/02/07, Alvaro Herrera < alvherre(at)commandprompt(dot)com> escribió:
> Gabriel Colina escribió:
>>
>> --- Luis Guevara < luis(dot)a(dot)guevara(at)gmail(dot)com> escribió:
>>

>> Estoy seguro que te van a dar una mejor respuesta
>> puesto que lo hago con la empresa a punto de cerrar.,
>> pero asi sin pensarlo le agregaria los else.
>>
>>
>> select dni,tipo,
>>         case when tipo=1 then sum(importe) else 0 end
>> as
>>  ingresos,
>>         case when tipo=2 then sum(importe) else 0 end
>> as
>>  egresos
>>  from pagos
>>  group by dni,
>>           tipo

> Claro, yo habria hecho algo como

> select dni,
>   sum(case when tipo = 1 then importe else 0 end) as ingreso,
>   sum(case when tipo = 2 then importe else 0 end) as egreso,
> from pagos
> group by dni

> --
> Alvaro
> Herrera                                http://www.CommandPrompt.com/
> PostgreSQL Replication, Consulting, Custom Development, 24x7 support

> --
> atte.
> Luis Guevara

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2007-02-14 20:30:51 Re: [pgsql-es-ayuda] tabla pg_user Ayuda......
Previous Message Edwin Quijada 2007-02-14 20:14:38 RE: Orientacion Sobre Comparativa entre postgres y mssql