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

Sumatoria Condicional

Estas en el tema de Sumatoria Condicional en el foro de Mysql en Foros del Web. Hola. Esta es la primera vez que escribo en el foro. Espero me puedan ayudar. Mi problema es el siguiente: Tengo una tabla con facturas ...
  #1 (permalink)  
Antiguo 24/11/2008, 13:44
 
Fecha de Ingreso: noviembre-2008
Mensajes: 4
Antigüedad: 15 años, 5 meses
Puntos: 0
Exclamación Sumatoria Condicional

Hola.
Esta es la primera vez que escribo en el foro.
Espero me puedan ayudar.

Mi problema es el siguiente:
Tengo una tabla con facturas y otra con sus pagos que se han realizado a esa factura.
Los pagos pueden cancelarse.

Código HTML:
[FACTURAS]      [PAGOS]
----------      ----------
folio           id
importe         factura
                pago
                estado (0:Normal - 1:Cancelado)
Mi consulta:

Código:
SELECT
facturas.folio, <-- Folio de la factura
facturas.importe, <-- Importe de la factura
facturas.importe-IFNULL(
  SUM(
    IF(
      pagos.estado = 0,pagos.pago,0 <--Si el estado NO ES 0, no lo DEBE sumar... pero sí lo hace.
    )
  )
,0) AS 'saldo' <--Saldo de la factura (Lo que falta por pagar)
FROM facturas
LEFT OUTER JOIN pagos ON pagos.factura = facturas.folio
GROUP BY facturas.id
Necesito que el saldo sólo me sume los pagos con "estado = 1".

¿Alguna idea?
Muchas gracias de antemano.
  #2 (permalink)  
Antiguo 24/11/2008, 14:16
 
Fecha de Ingreso: noviembre-2008
Mensajes: 4
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Sumatoria Condicional

RESUELTO:
Código:
SELECT
facturas.folio,
facturas.importe,
facturas_indice.importe-IFNULL(
  SUM(
    CASE WHEN pagos.estado = 0 THEN pagos.pago ELSE 0 END
  )
,0) AS 'saldo',
FROM facturas
LEFT OUTER JOIN pagos ON pagos.factura = facturas.folio
GROUP BY facturas.id
Gracias por su ayuda.
Espero este post le sirva a alguien más.
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 00:22.