Re: Ayuda con SELECT

From: Luis <esteban(at)princesa(dot)pri(dot)sld(dot)cu>
To: pgsql-es-ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Ayuda con SELECT
Date: 2010-05-12 18:40:41
Message-ID: op.vclvfkd2tyhnfo@localhost
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

On Thu, 06 May 2010 21:17:09 -0400, Alvaro Herrera
<alvherre(at)alvh(dot)no-ip(dot)org> wrote:

> Excerpts from Miguel Rodríguez Penabad's message of jue may 06 16:58:11
> -0400 2010:
>> SELECT cuenta,subcuenta, sum(parcial),sum(credito),sum(debito)
>> FROM comprobantes_detalles
>> GROUP BY cuenta,subcuenta
>
> Casi, pero no desagrupa los creditos de los debitos en una misma
> subcuenta.
> Creo que debería poder agregar un CASE en el GROUP BY que distinga si
> uno u
> otro valor es cero, supongo que algo así
>
> SELECT cuenta,subcuenta, sum(parcial),sum(credito),sum(debito)
> FROM comprobantes_detalles
> GROUP BY cuenta,subcuenta, CASE WHEN credito=0 THEN 1 ELSE 2 END
>
> (nota: asume que el modelo se encarga de asegurar que cada registro
> tiene 0 en
> credito o bien en debito. Si no es así, entonces falta un CHECK en la
> definición de la tabla ...)
>
> Ignoro si realmente hace lo que quiere Luis.

Las propuestas están muy buenas, me han servido bastante pero me falta
algo, admito que no me expliqué bien.

Debe ser como propone Alvaro, es decir, se deben desagregar los débitos de
los créditos pero también los parciales que corresponden a los débitos de
los parciales que corresponden a los créditos.

La cuestión es que la tabla almacenará muchos comprobantes, en cada uno se
afectará un grupo de cuentas, algunas de las cuales también serán
afectadas en otros comprobantes y mi objetivo es elaborar un único
comprobante que tenga todas las cuentas afectadas por lo que hay que
desagregar los débitos de los créditos pero además los parciales que
correponden a los débitos de los parciales que correponden a los créditos.

Por lo que,

SELECT cuenta,subcuenta,sum(parcial) as Parcial, sum(debito) as Débito,
sum(credito) as Crédito
FROM comprobantes_detalles
GROUP BY cuenta,suncuenta, CASE WHEN debito=0 THEN 1 ELSE 2 END

se acerca bastante pero le falta desagregar también los parciales de los
débitos de los parciales de los créditos que hasta el momento los tiene
juntos.

Es decir, para una situación como esta(considerando el comportamiento para
una sola cuenta),

cuenta subcuenta parcial débito crédito
165 0000 0.00 10.00 0.00
165 0020 10.00 0.00 0.00
...

165 0000 0.00 0.00 20.00
165 0020 20.00 0.00 0.00
...

165 0000 0.00 30.00 0.00
165 0020 30.00 0.00 0.00
..

165 0000 0.00 0.00 40.00
165 0020 40.00 0.00 0.00

Hasta ahora obtengo esto,

cuenta subcuenta parcial débito crédito
165 0000 0.00 40.00 0.00
165 0020 100.00 0.00 0.00
165 0000 0.00 0.00 60.00
...

Pero necesito esto,

cuenta subcuenta parcial débito crédito
165 0000 0.00 40.00 0.00
165 0020 40.00 0.00 0.00
165 0000 0.00 0.00 60.00
165 0020 60.00 0.00 0.00
...

Es decir, un solo débito, un solo parcial débito, un solo crédito y un
solo parcial crédito por cada cuenta que se repita en la tabla

Bueno, y aprovecho la oportunidad para 'desaguar mis lagunas' en presencia
de los ingenieros 'hidráulicos' prensentes,

1. Cómo logro que se mantenga la letra inicial mayúscula para la fila de
encabezado?

2. Noto que en el modelo de los datos se puede implementar mucho de la
lógica que antes se instrumentaba en el modelo del negocio, de hecho así­
comencé a diseñarlo en python pero queriendo saciar mi curiosidad aterrizé
aquí­ en el 'amazona'. Pregunto, hasta dónde sería bueno materializar esta
idea?, Ventajas/desventajas?

3. Dónde puedo encontrar información sobre cómo emplear estas cosas(CASE)
en SQL?

--
Saludos,

Luis

--

Este mensaje le ha llegado mediante el servicio de correo electronico que ofrece Infomed para respaldar el cumplimiento de las misiones del Sistema Nacional de Salud. La persona que envia este correo asume el compromiso de usar el servicio a tales fines y cumplir con las regulaciones establecidas

Infomed: http://www.sld.cu/

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2010-05-12 19:19:12 Re: Ayuda con SELECT
Previous Message Miguel Rodríguez Penabad 2010-05-12 16:22:12 Re: duda con insert de muchas filas