通过LinkServer MDX OPENQUERY - 结果我2.999999999999999E-2

时间:2015-02-20 11:55:02

标签: sql-server mdx openquery

我正在使用存储过程使用LinkServer Object和OLAP构造从OPENQUERY Cube获取结果。

查询工作正常。但是对于计算的lifetimeCapacity度量总和,结果为 2.999999999999999E-2 ,当我在SSMS MDX查询盘中直接运行相同的MDX时,这可以正常工作。我不知道我是如何处理的,以及为什么它表现得像这样。请帮我解决这个案子。

3 个答案:

答案 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
    ...
    ...