MDX:对维度值的IIf条件始终为false

时间:2013-10-02 14:24:39

标签: sql-server ssas mdx ssas-2008 iif

我正在尝试在列中生成不同的输出,这取决于我尝试使用[Scenario].[Option]函数实现的维+5的值IIf。< / p>

WITH MEMBER [XorY] AS
(
    IIf([Scenario].[Option] = +5, 'X', 'Y')
    --IIf([Scenario].[Option].&[+5], 'X', 'Y')
)
SELECT
NON EMPTY
(
    [Scenario].[Option].[Option]
) ON ROWS,
NON EMPTY
(
    [XorY]
) ON COLUMNS
FROM [RePro]
WHERE
(
    [ABC].[ABC].[Val]
) CELL PROPERTIES VALUE

但是,使用上述任一IIf语句,无论[XorY]的值如何,Y始终为[Scenario].[Option]。看起来我正在做的比较只是语法错误或其他什么。我该怎么做呢?我注意到如果我在[Measures]条件中使用IIf维度中的计算成员会更好,但在我的情况下这是不可能的 - 我必须使用[Scenario].[Option]。< / p>

感谢您收到的任何帮助:)

1 个答案:

答案 0 :(得分:3)

使用成员语句时,通常需要使用currentmember,因为它引用当前单元格。将其与membervalue结合使用即可获得该值。在这种情况下,我然后用引号包装预期的答案。

WITH MEMBER [XorY] AS
(
   IIf([Scenario].[Option].currentMember.membervalue = "+5", 'X', 'Y')
)

如果你要与一个数字进行比较:

WITH MEMBER [XorY] AS
(
   IIf(STRTOVALUE([Scenario].[Option].currentMember.membervalue) = 5, 'X', 'Y')
)

如果不是[场景]中的所有成员,则可能会返回错误。[选项]是数字。转换也存在潜在的性能问题。