我已将用户定义的聚合添加到我的数据库中,用于计算组的乘积。
代码基本上是从这里逐字提取的逐字提取的。
我正在使用该函数来计算我拥有每月回报数据的金融工具的生命周期至今回报。该表如下所示:
----------------------------------------------------------
| InstrumentId(int) | MonthEnd(datetime) | Return(float) |
----------------------------------------------------------
我的查询如下所示:
SELECT R1.InstrumentId,
R1.MonthEnd,
R1.MonthlyReturn,
dbo.Product(1 + R2.MonthlyReturn) AS TotalReturn
FROM Returns R1
INNER JOIN Returns R2 ON R2.InstrumentId = R1.InstrumentId
AND R2.MonthEnd <= R1.MonthEnd
WHERE R1.InstrumentId BETWEEN 1 AND 50
GROUP BY R1.InstrumentId, R1.MonthEnd, R1.MonthlyReturn
ORDER BY R1.InstrumentId, R1.MonthEnd
当我只有几个仪器时,查询工作正常,但添加某些仪器会导致每个结果都为 NULL。当我使用 OPTION(MAXDOP 1) 执行查询时,结果很好。
有谁知道是什么导致了这个问题?
编辑:忘了提到我正在运行 SQL Server 2012 和聚合目标 .NET 4.5