小编Gae*_*n56的帖子

计算 3 年的回撤和波动率

我有一张每日价格表,如下所示,在这个SQLfiddle 中。每条记录都与 ShareClassID、货币、日期和金额相关联。在我的真实场景中,我可以拥有至少 10 年的每日价格。

目标是计算3 年期间而非整个期间的回撤波动性

下面的查询正在对所有记录进行计算。对于给定的日期,我只想对过去 3 年进行计算。我不知道该怎么做。

添加AND valueDate >= DATEADD(yy, -3, GETDATE())WHERE条款并没有给我我需要的东西:我需要从当前valueDate记录执行 3 年计算。在每一行上,我想从当前行到 -3 年执行计算。

样本数据

CREATE TABLE [dbo].ShareClassData2( 
valueDate  [date] NOT NULL,
 NAVLocal  [numeric](26, 8) NULL,
currency_fk   [bigint] NOT NULL,
vehicleShareClassGroup_fk   [bigint] NOT NULL,
 importTransactionID    [bigint] NOT NULL
)

INSERT INTO [dbo].[ShareClassData2]( [valueDate] ,[NAVLocal],[currency_fk],[vehicleShareClassGroup_fk],[importTransactionID]) VALUES (  '2014-09-29',113.49,12,22370,1  );
INSERT INTO [dbo].[ShareClassData2]( [valueDate] ,[NAVLocal],[currency_fk],[vehicleShareClassGroup_fk],[importTransactionID]) VALUES (  '2014-09-30',113.75,12,22370,1  );
INSERT INTO [dbo].[ShareClassData2]( [valueDate] ,[NAVLocal],[currency_fk],[vehicleShareClassGroup_fk],[importTransactionID]) …
Run Code Online (Sandbox Code Playgroud)

sql-server window-functions sql-server-2016

5
推荐指数
1
解决办法
803
查看次数