gpt4 book ai didi

sql - 在 SQL 中复制 PMT 函数,使用列值作为输入

转载 作者:行者123 更新时间:2023-12-03 18:39:12 25 4
gpt4 key购买 nike

在 excel 中,PMT 功能根据年利率、总期数、原始面值和债券的期末值(value)为您提供每月付款。

计算月供的数学公式为:

M=[OF(i(1+i)^n)]/[(1+i)^(n-1)]

M=Monthly payment
OF=Original Face
i=annual interest rate/12
n=number of periods

为了以 (i=.08/12, n=10, OF=10000) 作为输入计算每月付款,我使用了这个:
if object_id('dbo.PMT') > 0
drop function dbo.PMT
go

create function dbo.PMT(@rate numeric(15,9), @periods smallint, @principal numeric(20,2) )
returns numeric (38,9)
as
begin
declare @pmt numeric (38,9)
select @pmt = @principal
/ (power(1+@rate,@periods)-1)
* (@rate*power(1+@rate,@periods))
return @pmt
end

go

然后根据我使用的论坛纠正数据类型:
drop function dbo.PMT
go
create function dbo.PMT
(
@rate float,
@periods smallint,
@principal numeric(20,2)
)
returns numeric (38,9)
as
begin
declare @pmt numeric (38,9)

declare @WK_periods float,
@WK_principal float,
@wk_One float,
@WK_power float

select @WK_periods = @periods,
@WK_principal = @principal,
@WK_One = 1

select @pmt =
round(
( @WK_principal * (@rate*power(@WK_One+@rate,@WK_periods)))
/ (power(@WK_One+@rate,@WK_periods)-@WK_One)
,9)

return @pmt

end
go
declare @rate float
select @rate = .0800000000000/12.000000000000000000

select PMT = dbo.PMT( @rate, 10 , 10000 )

PMT

这返回了准确和正确的答案。但是,有没有办法做到这一点,而不是使用这些常量(i=.08/12、n=10 等)作为输入,我可以使用一列值?我有大约 10000 种不同时期、利率和原始面的债券,需要根据它们的列计算每月付款。理想情况下,我会有一个额外的列显示每个债券的每月付款。任何帮助都会令人难以置信,谢谢!

最佳答案

SELECT
<originalcolumns>,
dbo.PMT(M.RateColumn, M.periodsColumn, M.principalColumn)
FROM
MyTable M

关于sql - 在 SQL 中复制 PMT 函数,使用列值作为输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17194957/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com