Access - Saldos medios

   
Vista:

Saldos medios

Publicado por alfanave (2 intervenciones) el 24/11/2011 01:02:45
Hola. Necesito desarrollar una función (o si se puede con consultas) que me permita calcular el saldo medio (promedio ponderado de los saldos) de una cuenta bancaria dado un periodo de tiempo. Por ejemplo, en mi tabla de transacciones tengo los siguientes datos (el campo Saldo no pertenece a la tabla, es originado mediante una consulta).

IdProceso Fecha Transaccion Importe Saldo

00001 30/09/11 Sueldos 4,500.00 4,500.00

00002 05/10/11 Retiro en ATM -500.00 4,000.00

00003 14/10/11 Honorarios Prof 1,400.00 5,400.00

00004 25/10/11 Pago TC -2,700.00 2,700.00

00005 03/11/11 Sueldos 4,500.00 7,200.00

Me piden calcular el saldo medio del mes de octubre (esto sirve más adelante para calcular el interés del mes). Teniendo estos datos, la función tendría que calcular el promedio ponderado de los saldos del mes:

Del 01/10/11 al 04/10/11 4,500.00 4 días

Del 05/10/11 al 13/10/11 4,000.00 9 días

Del 14/10/11 al 24/10/11 5,400.00 11 días

Del 25/10/11 al 31/10/11 2,700.00 7 días

Saldo medio = (4,500 x 4 + 4,000 x 9 + 5,400 x 11 + 2,700 x 7) / 31 = 4,267.74

Alguna idea por favor de cómo se podría hacer esto? 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
Imágen de perfil de Enrique Ramírez

Saldos medios

Publicado por Enrique Ramírez (617 intervenciones) el 13/12/2011 21:36:10
creé tabla1 con los campos del(fecha) al(fecha) saldos(double) dias(integer)

usa estas dos consultas en el orden en que te las pongo, el resultado queda en tabla1_b:

SELECT Tabla1.saldo, Tabla1.dias, [saldo]*[dias] AS acumulado INTO Tabla1_a
FROM Tabla1;

SELECT Sum([acumulado]/31) AS SaldoMedio INTO tabla1_b
FROM Tabla1_a;
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

Saldos medios

Publicado por alfanave (2 intervenciones) el 14/12/2011 03:19:40
OK Gracias por el aporte, pero la idea era no modificar la estructura de la tabla original, a lo mucho usar una tabla temporal.

Después de mucho ensayo y error, logré una solución aceptable. El problema era el caso en que la última transacción del mes anterior fuera el 15/10/11 y la primera del mes actual, el 7/11/11. Es evidente que una simple resta de fechas indicaría que el saldo actual habría estado colocado por 22 días, cuando lo real (desde el inicio del mes) era 7 días.

La solución pasó por crear una tabla temporal y llenarla con los datos de los saldos acumulados de cada uno de los días del mes. Mediante una función que incorporaba un loop (For i=1 to [ultimodiadlemes]) fui agregando uno a uno los días del mes y su correspondiente saldo acumulado.

Al final, una consulta sumaba los saldos diarios y los dividía entre el número de días del mes. La solución lograda permitió luego incorporar el saldo promedio para calcular el interés del mes al final del periodo.
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