Ver Mensaje Individual
  #7  
Antiguo 27-10-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Reputación: 31
Lepe Va por buen camino
Código SQL [-]
CREATE PROCEDURE SUMATOTAL (
    PER INTEGER,
    EST INTEGER)
RETURNS (
    TOTAL FLOAT,
    CODAFILIADO INTEGER,
    FECHAMOD DATE,
    MONTO FLOAT,
    MOTNOPAGO INTEGER,
    PAGO VARCHAR(1),
    USUARIO INTEGER,
    CODIGO INTEGER,
    NOMBREYAPELLIDO VARCHAR(50),
    NRODOC INTEGER,
    APORTA VARCHAR(1),
    CUIL VARCHAR(25),
    CODPERIODO INTEGER,
    NROESTAB INTEGER)
AS
begin
total = 0;
For SELECT DISTINCT APORTESAFI.Codafiliado, APORTESAFI.Fechamod, APORTESAFI.Monto, APORTESAFI.Motnopago, aportesafi.Codperiodo,
Aportesafi.Pago, APORTESAFI.Usuario, APORTESAFI.Codigo, aportesafi.Nroestab, AFILIADOS.NOMBREYAPELLIDO , AFILIADOS.NRODOC, AFILIADOS.APORTA, AFILIADOS.CUIL
FROM APORTESAFI
   INNER JOIN AFILIADOS ON (APORTESAFI.CODAFILIADO = AFILIADOS.CODIGOAFILIADO)
WHERE 
   (
      (APORTESAFI.CODPERIODO = :PER)
   and 
      (APORTESAFI.NROESTAB = :EST)
   )
ORDER BY APORTESAFI.NROESTAB, NOMBREYAPELLIDO
INTO :Codafiliado, :Fechamod, :Monto, :Motnopago, :codperiodo, :Pago, :Usuario, :Codigo, :nroestab, :NOMBREYAPELLIDO , :NRODOC, :APORTA, :CUIL DO
BEGIN
total = :total + :monto;
end
suspend;
end

Tan fácil como cambiar el suspend del bucle, así realiza la sumatoria de todos los registros y solo devuelve datos al finalizar, cuando ya se tiene el monto total.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita