On Thu, 06 May 2010 21:17:09 -0400, Alvaro Herrera
<alvhe...@alvh.no-ip.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/
-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org)
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

Responder a