IIF与会员比较日期

时间:2011-04-19 18:37:58

标签: ssas mdx

我对MDX很新,并且有一个基本问题。我想要一个计算的度量,它为小于指定日期的日期返回一个值,如果大于指定日期则返回另一个值。我试过了:

with member [measures].[tempmeasure] as 
    IIF
       (
        [Date].[Date].CurrentMember < [Date].[Date].&[20100501]
        , 1
        , 2
       )

select 
   [Date].[Date].Members
   * 
   [measures].[tempmeasure] on columns
from [MyCube]

这似乎不起作用。那是使用MS SSAS 2008。 我有什么想法可能做错了吗?

3 个答案:

答案 0 :(得分:2)

使用:

IIF([Date].[Date].CurrentMember < [Date].[Date].&[20100501], 1, 2)

您要比较两个元组值,而不是日期成员本身。 你可以看一下here关于元组,集合等的教程......

当您使用AS时,我认为您可以使用DataDiff函数计算两个日期之间的天数:

DateDiff("d", [Date].[Date].CurrentMember.MemberValue, [Date].[Date].&[20100501].MemberValue )

否则,您可能会有一些可用于此目的的成员属性:

IIF([Date].[Date].CurrentMember.Properties( 'prop-name', TYPED ) < [Date].[Date].&[20100501].Properties( 'prop-name', TYPED ) , 1, 2)

干杯。

答案 1 :(得分:1)

IIF期望一个返回布尔值的逻辑表达式。我认为在你的情况下 [Date].[Date].CurrentMember将返回维值,即集合。在这种情况下,小于运算符将导致语法错误。

答案 2 :(得分:1)

请使用以下表达

IIF
   (
    [Date].[Date].Currentmember.MemberValue  < 
    [Date].[Date].&[20100501].MemberValue
    , 1
    , 2
   )

我测试过它按预期工作.....

如果您有任何疑问,请与我们联系