給定起始值@pStartingValue
和包含rorDate
和ror
的表格是什麼使用TSQL在每個日期獲取NAV的最有效方式?如何在SQL中將回報率累計爲淨資產值?
這在數學上微不足道,而且代碼簡單。目前我有一個天真的SQL實現依賴於遊標。
第一次約會時,淨資產值已@pStartingValue * ROR
在隨後每次約會,這是先前計算的資產淨值* ROR 或它@pStartingValue *每以前ROR
你將如何有效地做到這一點只在MSSQL2005 +?
DECLARE @rorDate DATE
DECLARE @getDate CURSOR
DECLARE @lastNAV as DECIMAL(19,7)
DECLARE @datedRoR as float
DECLARE @NAVTotals TABLE
(
NAV DECIMAL(19,7),
navDate DATE
)
SET @lastNAV = 100
SET @getDate = CURSOR FOR
SELECT
p.[DATE]
FROM
performance p
ORDER BY
p.[DATE]
OPEN @getDate
FETCH NEXT
FROM @getDate INTO @rorDate
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT
@datedRoR = b.finalNetReturn
FROM
performance b
WHERE
b.date = @rorDate
INSERT INTO @NAVTotals (NAV, navDate)
VALUES (@lastNAV * (1 + @datedRoR), @rorDate)
SELECT
@lastNAV = c.NAV
FROM
@NAVTotals c
WHERE
c.navDate = @rorDate
FETCH NEXT
FROM @getDate INTO @rorDate
END
CLOSE @getDate
DEALLOCATE @getDate
select * from @NAVTotals
向我們展示您的光標方法,並且您可能會獲得與預期輸出相匹配的更好結果。 – RThomas
@RThomas我添加了我的遊標實現 – Matthew