Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » PostgreSQL »

Sumar segun folio del movimiento en una consulta.

Estas en el tema de Sumar segun folio del movimiento en una consulta. en el foro de PostgreSQL en Foros del Web. Hola que tal, tengo poco manejando instrucciones SQL, por lo tanto no se como resolver lo siguiente: Hay dos tablas 1) Datos generales (id_cliente, nombre, ...
  #1 (permalink)  
Antiguo 29/06/2009, 17:23
 
Fecha de Ingreso: junio-2009
Mensajes: 3
Antigüedad: 15 años, 5 meses
Puntos: 0
Sumar segun folio del movimiento en una consulta.

Hola que tal, tengo poco manejando instrucciones SQL, por lo tanto no se como resolver lo siguiente: Hay dos tablas

1) Datos generales (id_cliente, nombre, domicilio, telefono,ciudad)
2) De abonos (id_abono,id_cliente, importe_abono, folio_recibo, fecha_abono)

En el campo folio_recibo, si inicia con NC=Nota de Crédito, NCA=Nota de cargo, PAG=Abono del cliente

Como puedo obtener la suma de cada concepto (NC, NCA, PAG) con una sola consulta?

De tal forma que los datos que obtenga con la consulta sean los siguientes:
nombre, domicilio, telefono,ciudad,totalNC,totalNCA,totalPAG

Intente con el CASE, pero almacena la suma en una sola variable y me toma un solo abono del cliente, cuando tiene 8 movimientos.

Agradecere si alguien puede compartir una idea de como hacerlo.

Muchas gracias.
  #2 (permalink)  
Antiguo 29/06/2009, 19:32
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 10 meses
Puntos: 360
Respuesta: Sumar segun folio del movimiento en una consulta.

Colima09..
La solución es con subconsultas, teniendo una subconsulta por cada sumatoria y llamandola por fuera.
Comparte las sentencias create table y algunos inserts y te colaboro con algo mas especifico.

Un saludo.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 30/06/2009, 08:26
 
Fecha de Ingreso: junio-2009
Mensajes: 3
Antigüedad: 15 años, 5 meses
Puntos: 0
Busqueda Respuesta: Sumar segun folio del movimiento en una consulta.

Hola Huesos52, mira te anexo la estructura de las tablas y datos:

Tabla: CatClientes
Descripción: Catálogo de clientes
---------------------------------------------------------------
CLAVE NOMBRE TIPO NULO PERMITIDO
---------------------------------------------------------------
SI id_cliente Serial NO
nombre Varchar
domicilio "
telefono "
ciudad "

Tabla: TblAbonos
Descripción: Abonos, NC y NCA de clientes
-----------------------------------------------------------------------------------
CLAVE NOMBRE TIPO NULO PERMITIDO
-----------------------------------------------------------------------------------
SI id_abono Serial NO
id_cliente Serial
importe_abono Double precision
folio_recibo Varchar
fecha_abono Date

Tabla: CatClientes
--------------------------------------------------------------------------------------------------------
id_cliente Nombre Domicilio Telefono Ciudad
--------------------------------------------------------------------------------------------------------
510 JUAREZ LOPEZ MARIA Fco. I Madero # 25 5562152 Colima
511 RIVAS MENDOZA LAURA Tabachines # 310 3694587 Comala
512 SANCHEZ CARRILLO SAUL Ferrocarriles # 1510 5569873 Colima

Tabla: TblAbonos
--------------------------------------------------------------------------------------------------------
id_abono id_cliente importe_abono folio_recibo fecha_abono
--------------------------------------------------------------------------------------------------------
25 510 7,088.40 PAG-109 03/04/2009
32 510 1,000.00 NC-25 30/04/2009
70 510 240.00 NCA-20 15/05/2009
96 510 2,900.00 PAG-251 16/05/2009
130 510 500.00 PAG-260 17/05/2009
215 510 732.51 NC-40 01/06/2009
230 510 1,000.00 PAG-318 10/06/2009
241 510 1,200.00 PAG-331 13/06/2009


Me comentas que se resuelve con subconsultas, pero la verdad, aún no se como aplicarlas. Pues se que debo validar el folio (substring(folio_recibo,1,3,)='NC-') según sea lo que vaya a sumar, pero no se como reflejarlo con subconsultas. Muchas gracias por tu apoyo, que tengas buen día.
  #4 (permalink)  
Antiguo 30/06/2009, 13:19
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 10 meses
Puntos: 360
Respuesta: Sumar segun folio del movimiento en una consulta.

No se si necesites algo así:

Código sql:
Ver original
  1. SELECT cc.nombre,cc.domicilio,cc.telefono,cc.ciudad,t1.totalnc,t2.totalnca,t3.totalpag FROM catclientes cc
  2. FULL OUTER JOIN (SELECT id_cliente, SUM(importe_abono) AS totalnc FROM tblabonos WHERE SUBSTRING(folio_recibo,1,3)='NC-' GROUP BY id_cliente) AS t1
  3. ON cc.id_cliente=t1.id_cliente
  4. FULL OUTER JOIN (SELECT id_cliente, SUM(importe_abono) AS totalnca FROM tblabonos WHERE SUBSTRING(folio_recibo,1,3)='NCA' GROUP BY id_cliente) AS t2
  5. ON cc.id_cliente=t2.id_cliente
  6. FULL OUTER JOIN (SELECT id_cliente, SUM(importe_abono) AS totalpag FROM tblabonos WHERE SUBSTRING(folio_recibo,1,3)='PAG' GROUP BY id_cliente) AS t3
  7. ON cc.id_cliente=t3.id_cliente

o algo así:

Código sql:
Ver original
  1. SELECT cc.nombre,cc.domicilio,cc.telefono,cc.ciudad,
  2. (SELECT SUM(importe_abono) AS totalnc FROM tblabonos WHERE SUBSTRING(folio_recibo,1,3)='NC-') AS sumaNC,
  3. (SELECT SUM(importe_abono) AS totalnca FROM tblabonos WHERE SUBSTRING(folio_recibo,1,3)='NCA') AS sumaNCA,
  4. (SELECT SUM(importe_abono) AS totalpag FROM tblabonos WHERE SUBSTRING(folio_recibo,1,3)='PAG') AS sumaPAG
  5. FROM catclientes cc;

Cuentanos como te va.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 01/07/2009, 11:09
 
Fecha de Ingreso: junio-2009
Mensajes: 3
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Sumar segun folio del movimiento en una consulta.

Hola Huesos52, lo voy a checar y te aviso el resultado.

Muchas gracias...
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:30.