sql-server - MDX:IIf 维度值的条件始终为假

标签 sql-server ssas mdx ssas-2008 iif

我正在尝试根据维度 [Scenario].[Option] 的值是否为 +5 在列中生成不同的输出尝试使用IIf函数实现。

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 而不管 [场景].[选项]。似乎我正在做的比较在语法上是错误的。我该怎么做呢?我注意到如果我在 IIf 条件下的 [Measures] 维度中使用计算成员,效果会更好,但在我的情况下这是不可能的 - 我必须使用 [Scenario].[Option]

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

最佳答案

当您使用成员语句时,您通常希望使用 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')
)

如果并非 [Scenario].[Option] 中的所有成员都是数字,这可能会返回错误。转换还存在潜在的性能问题。

关于sql-server - MDX:IIf 维度值的条件始终为假,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19139316/

相关文章:

ssas - 如果当前成员有子级,则展开用户层次结构 - MDX

SSAS MDX 计算 - 基于组值的总和

mdx - 在计算成员中使用 EXCEPT

sql - 在同一查询中使用 UNION 和 UNION ALL

c# - 如何更改 DataContext 中的数据库名称

sql-server - 在字符串中查找多个空格的表达式

sql - 在 SQL Server 中将多行转换为多列

sql - SSAS 表格中的不同流程模式如何工作?

c# - SSAS:以编程方式永久创建计算成员

excel - Excel 中具有多个条件的 CUBESET() 函数