2011-04-19 32 views
1

我很新MDX并有一个基本的问题。我想要一个计算的度量,它返回一个小于指定日期的日期的值,如果大于指定的日期,则返回另一个值。我曾尝试过:IIF与会员比较日期

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。 任何想法我可能做错了什么?

回答

1

请使用以下表达式

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

我测试工作正常.....

请让我知道如果你有

1

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

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) 

干杯。

+0

我并不想有任何疑问计算日期之间的差异,我希望计算的度量值在日期在给定日期之前具有一个值,而当日期大于该日期时需要另一个值。 – 2011-04-20 15:55:39

+0

我错过了什么吗? IIF(DateDiff(...)> 0,1,2)或<0应该做的伎俩... ... – 2011-04-20 16:40:47