SQL Server 2000和2005版并没有提供很多金融函数,但是有很多金融计算公式的来源,在这篇技巧中,我将展示净现值(present value (PV))和未来值(future value (FV))函数,它们都是标量的用户自定义函数(UDF)。 Yq}gRs;q
wzaBiN O4
SQL Server 2000和2005版并没有提供很多金融函数,但是有很多金融计算公式的来源,在这篇技巧中,我将展示净现值(present value (PV))和未来值(future value (FV))函数,它们都是标量的用户自定义函数(UDF)。 Yq}gRs;q
wzaBiN O4
以下是PV的基本逻辑:给定一个未来的值,一个利率和复利计算时期,PV的计算可以确定现在投资的价值,其公式为: %WRxeFc&{R
>'b'`=
PV = FV [ 1 / (1 + i)n ] ? 1=FNR<
oVS`V6(
列表A展示了将其转换为一个SQL Server的UDF并不是一件很困难的事。 8$j_tlwD
QDHXH ~<
-- ================================================ &dAk@@c)P
-- Template generated from Template Explorer using: ``y :ShP
-- Create Scalar Function (New Menu).SQL R&7"ph7i
-- ST T6/vc\3
-- Use the Specify Values for Template Parameters K.nm~<Y
-- command (Ctrl-Shift-M) to fill in the parameter !I0 9<j
-- values below. bi}:#mI1
-- a ;!S`Bq
-- This block of comments will not be included in t2 kK[]
-- the definition of the function. AK X`f{
-- ================================================ c)"f
SET ANSI_NULLS ON Ak}k5RI
GO Uq v5
SET QUOTED_IDENTIFIER ON +z F>
GO jOru_6d #l
-- ============================================= _ZI7 I?Kt
-- Author: Arthur Fuller vJG+l1C
-- Create date: 22-Aug-2006 VgEY0a[+c=
-- Description: Returns Present Value oy%P1BK
-- Example: BPQ r+Zz&
-- @fv = 150000 (dollars) Nh-ET?O
-- @i = 6% (per annum) 1K?'$]v=
-- @p = 5 (years) 5"`;nR~
-- SELECT DBO.PV_fn( 100000, .06, 5) C\v;T#c
-- returns 150000 s"4;~xSIc8
-- ============================================= qZf$+Aq
CREATE FUNCTION PV_fn /5eR 0
( ,/EN2Uoy
-- Add the parameters for the function here W0&Tx1\m#
@fv float, -- future value desired kMhG,8
@i decimal, -- interest rate EPRJ irg
@p int -- number of compounding periods kBCr,lHU:m
) }]F*F0v
RETURNS money |J]d-{ jQ
AS <bN%|dl
BEGIN 8<8
-- Declare the return variable here A>c`KLM
DECLARE @Result money 1]u;~GU
-- Add the T-SQL statements to compute the return value here % Z OT
SELECT @Result = @fv *(1/Power((1+@i),@p)) |U+ oA
-- Return the result of the function nWJP.~5?
RETURN @Result u!hHf9W*
END 9~Z3,Kx0$
GO t)o[V/-Lg
^kL0%g
与PV相反的就是FV,它的含义是:给定现在的货币量、利率和复利计算时期,您的钱在时期结束时的价值。 /~6t]$b'