MySQL - calcular dias de atraso de una deuda

 
Vista:
sin imagen de perfil
Val: 6
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

calcular dias de atraso de una deuda

Publicado por heberth (6 intervenciones) el 11/06/2015 16:26:03
Saludos para todos, tengo la siguiente pregunta: Cómo puedo calcular los días de atraso correspondientes al pago de una deuda la cual puede ser de pago diario o de pago semanal.
Hasta ahora tengo éste código:

SELECT estado,

Case when forma_pago ='diario'
then
(SELECT TIMESTAMPDIFF
(DAY , fecha, CURDATE( ) + 2 ) AS Dias_mora
FROM pagos)

Case when forma_pago ='Semanal'
then
(SELECT TIMESTAMPDIFF
(DAY , fecha, CURDATE( ) + 5 ) AS Dias_mora
FROM pagos)


FROM pagos
END

El código anterior me arroja el siguiente error:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Case when forma_pago ='Semanal' then (SELECT TIMESTAMPDIFF (DAY , fecha, C' at line 9

Lo que busco es poder hacer que A los pagos diarios se les otorga 2 días de gracia para realizar el pago, para los pagos semanales se les otorga 5 días de pago para hacer el pago de la cuota correspondiente.

De antemano gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 17
Ha aumentado su posición en 4 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

calcular dias de atraso de una deuda

Publicado por Hugo QN (32 intervenciones) el 11/06/2015 20:57:00
tu codigo está muy mal.
deberia ser asi.

SELECT estado,

CASE forma_pago
WHEN 'diario' THEN
(SELECT TIMESTAMPDIFF (DAY , fecha, CURDATE( ) + 2 ) FROM pagos d WHERE d.id = p.id)
WHEN 'Semanal' THEN
(SELECT TIMESTAMPDIFF (DAY , fecha, CURDATE( ) + 5 ) FROM pagos d WHERE d.id = p.id)
END AS Dias_mora

FROM pagos p

Ó

SELECT estado,

CASE WHEN forma_pago = 'diario' THEN
(SELECT TIMESTAMPDIFF (DAY , fecha, CURDATE( ) + 2 ) FROM pagos d WHERE d.id = p.id)
WHEN forma_pago = 'Semanal' THEN
(SELECT TIMESTAMPDIFF (DAY , fecha, CURDATE( ) + 5 ) FROM pagos s WHERE s.id = p.id)
END AS Dias_mora

FROM pagos p

saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 6
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

calcular dias de atraso de una deuda

Publicado por heberth mazuera (6 intervenciones) el 11/06/2015 22:56:02
Cordial saludo, de antemano gracias Hugo QN por tu aporte, te comentento que ejecuto cualquiera de los dos script y me arroja este error: #1242 - Subquery returns more than 1 row.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar