我正在使用存储过程使用LinkServer Object和OLAP
构造从OPENQUERY
Cube获取结果。
查询工作正常。但是对于计算的lifetimeCapacity度量总和,结果为 2.999999999999999E-2 ,当我在SSMS MDX查询盘中直接运行相同的MDX时,这可以正常工作。我不知道我是如何处理的,以及为什么它表现得像这样。请帮我解决这个案子。
答案 0 :(得分:0)
你不应该使用浮动类型。使用小数或双
答案 1 :(得分:0)
使用(存储过程中的SQL类型DECIMAL(8,2)
作为包含该值的变量,或者如果您直接从查询返回,则转换为它。
将这样的计算舍入到最接近的0.01,给出0.03。
增加类型的第二个参数以增加精确度的小数位数。
答案 2 :(得分:0)
它是浮动的,所以最初让sql-server知道它是通过强制转换浮动...然后进行进一步的转换:
SELECT
CONVERT(DATETIME, CONVERT(CHAR(20),"[Date].[Date - Calendar Month].[Member_Caption]")) AS [Date]
, CONVERT(NUMERIC(18,2),CAST(ISNULL("[Measures].[SomeNumericMeasure]", 0.0) AS FLOAT)) AS SomeNumericMeasure
FROM
OPENQUERY
...
...