2011-04-19 53 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