На этом веб-сайте я увидел функцию, которую я хотел бы использовать с postgresql:
https://raresql.com/2013/05/16/sql-server-excel-financial-functions-pmt/
Вот запрос:
CREATE FUNCTION UDF_PMT
(@InterestRate NUMERIC(18,8), --Rate is the interest rate per period.
@Nper INT, --Nper is the total number of payment
--periods in an annuity.
@Pv NUMERIC(18,4), --Pv is the present value, or the
--lump-sum amount that a series of
--future payments is worth right now.
--If pv is omitted, it is assumed to be
--0 (zero). PV must be entered as a
--negative number.
@Fv NUMERIC(18,4), --Fv is the future value, or the
--lump-sum amount that a series of
--future payments is worth right now.
--If pv is omitted, it is assumed to
--be 0 (zero). PV must be entered as a
--negative number.
@Type BIT --Type is the number 0 or 1 and
--indicates when payments are due.
--If type is omitted, it is assumed
--to be 0 which represents at the end
--of the period.
--If payments are due at the beginning
--of the period, type should be 1.
)
RETURNS NUMERIC(18,2) --float
AS
BEGIN
DECLARE @Value NUMERIC(18,2)
SELECT @Value = Case
WHEN @Type=0
THEN Convert(float,@InterestRate / 100)
/(Power(Convert(float,(1 + @InterestRate / 100)),@Nper)-1)
* -(@Pv*Power(Convert(float,(1 + @InterestRate / 100)),@Nper)
[email protected])
WHEN @Type=1
THEN Convert(float,@InterestRate / 100) /
(Power(Convert(float,(1 + @InterestRate / 100)),@Nper)-1)
* -(@Pv*Power(Convert(float,(1 + @InterestRate / 100)),@Nper)
[email protected])
/(1 + Convert(float,(@InterestRate / 100)))
END
RETURN @Value
END
Я переименовал переменные без @
и немного изменил тело, но почему-то я не могу заставить его работать правильно.
Можно ли переписать этот запрос для postgresql? У вас есть идеи, как это сделать? Благодаря