admin

在SQL SERVER 2008中计算几何链接的返回值

sql

计算几何链接返回

如何将record2 * record1相乘?

愿望是返回实际利率和废止利率的值

给定表unterval:

   EndDate    PctReturn
-------------------------------
1. 05/31/06   -0.2271835
2. 06/30/06   -0.1095986
3. 07/31/06    0.6984908
4. 08/31/06    1.4865360
5. 09/30/06    0.8938896

所需的输出应如下所示:

EndDate    PctReturn    Percentage   UnitReturn         
05/31/06   -0.2271835   -0.002272    0.997728               
06/30/06   -0.1095986   -0.001096    0.996634669                
07/31/06    0.6984908    0.006985    1.00359607             
08/31/06    1.4865360    0.014865    1.018514887                
09/30/06    0.8938896    0.008939    1.027619286


Percentage = PctReturn/100

UnitReturn  (1 + S1) x (1 + S2) x ... (1 + Sn) - 1

汇总所需的值:

Actual Rate 2.761928596             
Annulized   6.757253223

关于合计值的数学:

 Actual Rate    1.027619    1.027619-1  =   0.027619    * 100 = 2.761928596

 Annulized Rate 6.757253    (ActualRate^(12/number of intervals)-1)*100

 Number of intervals in Example = 5

只有5条记录或间隔

我确实尝试在select语句中利用总和,但这不允许将record2与record1相乘以链接返回。我认为利用while函数将允许逐条记录地逐步增加unitreturn的值。我在SQL的入门级水平上寻求帮助。


阅读 183

收藏
2021-06-07

共1个答案

admin

在SQL Server中获得产品有两种选择。

1.使用日志和指数进行模拟:

sqlfiddle

create table returns
(
  returnDate date,
  returnValue float
)

insert into returns values('05/31/06', -0.002271835)
insert into returns values('06/30/06', -0.001095986)
insert into returns values('07/31/06', 0.006984908)
insert into returns values('08/31/06', 0.014865360)
insert into returns values('09/30/06', 0.008938896)

select totalReturn = power
  (
    cast(10.0 as float)
    , sum(log10(returnValue + 1.0))
  ) - 1
from returns;

with tr as
(
  select totalReturn = power
  (
    cast(10.0 as float)
    , sum(log10(returnValue + 1.0))
  ) - 1
  , months = cast(count(1) as float)
  from returns
)
select annualized = power(totalReturn + 1, (1.0 / (months / 12.0))) - 1
from tr;

这利用日志和指数来模拟产品计算。更多信息:用户定义的函数

这里的一个问题是返回<-100%失败。如果您不希望这些设置没问题,那么您需要将所有<100%到-100%的值设置。

然后,您可以根据需要使用此实际收益来获得年度收益。

2.使用CLR定义自定义聚合:

参见在线书籍

您可以创建一个CLR自定义函数,然后将其链接在一起以在查询中使用。这是更多的工作,您必须在服务器上启用CLR,但是一旦完成,就可以根据需要使用它。

2021-06-07