/***********************************************************************************************
Objetivo: Crear tabla de amortizacion método francés
Fecha: 20/Julio/2011
exec sp_AmortizacionFrances 25000,12,0.85
************************************************************************************************/
Alter Procedure sp_AmortizacionFrances
@Prestamo float
,@Periodos smallint
,@Tasa float
As
-- 0. Declara variables
Declare @TasaMens float
Declare @TasaT1 float
Declare @CuotaC1 float
Declare @CuotaC1mT1 float
Declare @Amortizacion float
Declare @UltAmortizado float
Declare @TotAmortizado float
Declare @Cuota float
Declare @Total float
Declare @Interes float
Declare @Contador smallint
-- 1. Crear tabla amortización
If object_id('tempdb..#Amortizacion') is not null drop table #Amortizacion
Create table #Amortizacion (
Mes smallint
,Total float
,Interes float
,Cuota float
,Amortizacion float
,Amortizado float
)
-- 2. Asignacion valores
-- Set @Prestamo=500
-- Set @Periodos=5
-- Set @Tasa=0.10
Set @TasaMens=@Tasa/12
Set @TasaT1=@Prestamo*@TasaMens
Set @CuotaC1=@Prestamo*((power(1+@TasaMens,@Periodos)*@TasaMens)/(power(1+@TasaMens,@Periodos)-1))
Set @CuotaC1mT1=@CuotaC1-@TasaT1
-- 3. Calcula primera Amortizacion
Insert into #Amortizacion values(1,@Prestamo,@TasaT1,@CuotaC1,@CuotaC1-@TasaT1,@CuotaC1-@TasaT1)
-- 4. Calculo antes ciclo
Set @Amortizacion=@CuotaC1-@TasaT1
Set @UltAmortizado=@CuotaC1-@TasaT1
Set @Total=@Prestamo-@Amortizacion
Set @Contador=2
While @Contador <= @Periodos
Begin
Set @Interes=(@Prestamo-@CuotaC1mT1*(power(1+@TasaMens,@Contador-1)-1)/@TasaMens)*@TasaMens
Set @Cuota=@Prestamo*((power(1+@TasaMens,@Periodos)*@TasaMens)/(power(1+@TasaMens,@Periodos)-1))
Set @Amortizacion=@Cuota-@Interes
Set @TotAmortizado=@Amortizacion+@UltAmortizado
--Amortizacion n
Insert into #Amortizacion values
(@Contador,@Total,@Interes,@Cuota,@Amortizacion,@TotAmortizado)
Set @UltAmortizado=@Amortizacion+@UltAmortizado
Set @Total=@Total-@Amortizacion
Set @Contador=@Contador+1
End
--5. Resultado
Select * from #Amortizacion
compute sum(interes),sum(Amortizacion),sum(cuota)
Excelente trabajo. Gracias!!!!
ResponderEliminarme da el siguiente error cuando lo ejecuto: Msg 156, Level 15, State 1, Procedure sp_AmortizacionFrances, Line 77
ResponderEliminarIncorrect syntax near the keyword 'compute'.
Muchas gracias por compartirlo!!
ResponderEliminarMuchas gracias.
ResponderEliminarEste comentario ha sido eliminado por el autor.
Eliminara mi tambien!! como se corrige?
ResponderEliminarAlguien corrigio el error
ResponderEliminar?
delete compute sum(interes),sum(Amortizacion),sum(cuota)
ResponderEliminarthis is all!