SELECT
[PLEC]
,[x]
,[lx]
,[rok]
FROM [Ubezpieczenia_Dys2013_21].[dbo].[TTZ]
alter FUNCTION kPx (@rok int, @plec int,@wiek int, @ile int)
returns FLOAT
BEGIN
DECLARE @LICZNIK FLOAT
DECLARE @MIANOWNIK FLOAT
SET @LICZNIK=(SELECT LX FROM TTZ WHERE PLEC=@plec AND rok=@rok AND X=@wiek+@ile)
SET @MIANOWNIK=(SELECT LX FROM TTZ WHERE PLEC=@plec AND rok=@rok AND X=@wiek)
RETURN @LICZNIK/@MIANOWNIK
END
ALTER FUNCTION kQx (@rok int, @plec int,@wiek int, @ile int)
returns FLOAT
BEGIN
DECLARE @LICZNIK FLOAT
DECLARE @MIANOWNIK FLOAT
SET @LICZNIK=(SELECT LX FROM TTZ WHERE PLEC=@plec AND rok=@rok AND X=@wiek+@ile)
SET @MIANOWNIK=(SELECT LX FROM TTZ WHERE PLEC=@plec AND rok=@rok AND X=@wiek)
RETURN (@MIANOWNIK-@LICZNIK)/@MIANOWNIK
END
alter FUNCTION Ax (@rok int, @plec int, @wiek int, @stopa float)
returns decimal (10,8)
BEGIN
RETURN (SELECT SUM(POWER(1/(1+@STOPA),X-@WIEK+1)*DBO.kPx(@rok,@plec,@wiek,X-@wiek)*DBO.kQx(@rok,@plec,X,1)) FROM TTZ WHERE PLEC=@plec AND rok=@rok AND X>=@wiek)
END
INSERT INTO TTZ VALUES (1,101,0,2010)
SELECT DBO.Ax (2010,1,100,0.05)
CREATE FUNCTION Ax_n (@rok int, @plec int, @wiek int, @stopa float, @termin int)
returns decimal (10,8)
BEGIN
RETURN (SELECT SUM(POWER(1/(1+@STOPA),X-@WIEK+1)*DBO.kPx(@rok,@plec,@wiek,X-@wiek)*DBO.kQx(@rok,@plec,X,1)) FROM TTZ WHERE PLEC=@plec AND rok=@rok AND X>=@wiek AND X<=@WIEK+@TERMIN-1)
END
SELECT DBO.Ax_n (2010,1,100,0.05,10)
SELECT rok, DBO.Ax (rok,1,20,0.05) from lata
order by 1