Código MySQL :
DELIMITER $$ DROP PROCEDURE IF EXISTS `bdutandas`.`GetConcentrado` $$ CREATE DEFINER=`root`@`localhost` PROCEDURE `GetConcentrado`(mesi integer,mesf integer,yearange integer,TipoCuenta varchar(20),estado integer) BEGIN SET @Suma=0; IF estado > 1 Then SELECT Cu.Tipo_Cuenta,C.num_cliente As 'No. Cliente',CONCAT(C.nombre,' ',C.apellidop,' ',C.apellidom)As Nombre,Cu.num_cuenta As 'No. Cta',CAST(D.Fecha AS CHAR) AS Fecha,D.id_deposito As 'NO',D.monto As 'Depositado',(@Suma:=(@suma+D.monto)) As Sumatoria,CAST(IF(tipo_cuenta='Semanal',WEEK(NOW()),IF(tipo_cuenta='Quincenal',FLOOR(WEEK(NOW())/2),'Ninguna')) AS CHAR) As 'Periodo Actual',Sum(D.monto)/Cu.monto_abono As 'Periodos Acreditados' FROM depositos D INNER JOIN cuentas Cu ON Cu.id_cuentas=D.id_cuenta INNER JOIN Clientes C ON C.id_cliente=Cu.id_cliente WHERE D.registrado=1 AND MONTH(cu.fecha_inicio)>=mesi AND MONTH(cu.fecha_inicio)<=mesf AND YEAR(Cu.fecha_inicio)=yearange AND Cu.tipo_cuenta LIKE CONCAT("%",TipoCuenta,"%") GROUP BY D.id_deposito ORDER BY D.id_deposito ASC; ELSE SELECT C.num_cliente As 'No. Cliente',Cu.num_cuenta As 'No. Cta',CAST(D.Fecha AS CHAR) AS Fecha,D.id_deposito As 'NO',D.monto As Depositado,(@Suma:=(D.monto+ @Suma)) As Sumatoria,CAST(IF(tipo_cuenta='Semanal',WEEK(NOW()),IF(tipo_cuenta='Quincenal',FLOOR(WEEK(NOW())/2),'Ninguna')) AS CHAR) As 'Periodo Actual',Sum(D.monto)/Cu.monto_abono As 'Periodos Acreditados' FROM depositos D INNER JOIN cuentas Cu ON Cu.id_cuentas=D.id_cuenta INNER JOIN Clientes C ON C.id_cliente=Cu.id_cliente WHERE D.registrado=1 AND MONTH(cu.fecha_inicio)>=mesi AND MONTH(cu.fecha_inicio)<=mesf AND YEAR(Cu.fecha_inicio)=yearange AND Cu.registrado=estado AND Cu.tipo_cuenta LIKE CONCAT("%",TipoCuenta,"%") GROUP BY D.id_deposito; END IF; END $$ DELIMITER ;
Pasa algo raro, cuando son pocos registros la sumatoria va como debiera; pero ya con algunos(actualmente 1000 van comenzando) comienza a dar sumatorias erraticas; pe:}
$2,000.00 $172,300.00
$500.00 $169,800.00
$400.00 $175,500.00
$1,000.00 $168,300.00
Cuando deberia ser:
escribió:
$2,000.00 $2,000.00
$500.00 $2,500.00
$400.00 $2,900.00
$1,000.00 $3,900.00