2015-06-20 75 views
0

我想檢查月份的數量,並根據該數字除以一定數量。問題是這段代碼總是默認爲else語句。任何人都可以發現問題嗎?謝謝。CASE陳述中的MDX維度用法

CREATE MEMBER CURRENTCUBE.[Measures].[SBBD] 
AS case [Date].[Calendar Month Number Of Year] 
     when 2 then [Measures].[SB]/28 
     when 4 then [Measures].[SB]/30 
     when 6 then [Measures].[SB]/30 
     when 9 then [Measures].[SB]/30 
     when 11 then [Measures].[SB]/30 
     else [Measures].[SB]/31 
    end, 
FORMAT_STRING = "Standard", 
VISIBLE = 1 , ASSOCIATED_MEASURE_GROUP = 'LB'; 
+0

是的 - 你想一個成員類型比較數字類型 - 它們永遠不會匹配 – whytheq

回答

1

嘗試只比較CASE聲明條件中的成員值。目前,您正在比較mdx中未看作數值表達式的成員[Date].[Calendar Month Number Of Year],並將其與數值表達式(2,4,...)進行比較。

也許以下工作更好:

CREATE MEMBER CURRENTCUBE.[Measures].[SBBD] 
AS case [Date].[Calendar Month Number Of Year].CURRENTMEMBER.MEMBER_VALUE 
     when 2 then [Measures].[SB]/28 
     when 4 then [Measures].[SB]/30 
     when 6 then [Measures].[SB]/30 
     when 9 then [Measures].[SB]/30 
     when 11 then [Measures].[SB]/30 
     else [Measures].[SB]/31 
    end, 
FORMAT_STRING = "Standard", 
VISIBLE = 1 , ASSOCIATED_MEASURE_GROUP = 'LB'; 

我會更傾向於最初創建度量[Measures].[NumOfMonth]再喂到這一點的情況下(沒準分裂兩種這樣會更快):

CREATE MEMBER CURRENTCUBE.[Measures].[NumOfMonth] 
AS [Date].[Calendar Month Number Of Year].CURRENTMEMBER.MEMBER_VALUE, 
FORMAT_STRING = "Standard", 
VISIBLE = 0 , ASSOCIATED_MEASURE_GROUP = 'LB'; 

CREATE MEMBER CURRENTCUBE.[Measures].[SBBD] 
AS case [Measures].[NumOfMonth] 
     when 2 then [Measures].[SB]/28 
     when 4 then [Measures].[SB]/30 
     when 6 then [Measures].[SB]/30 
     when 9 then [Measures].[SB]/30 
     when 11 then [Measures].[SB]/30 
     else [Measures].[SB]/31 
    end, 
FORMAT_STRING = "Standard", 
VISIBLE = 1 , ASSOCIATED_MEASURE_GROUP = 'LB'; 

硬幣

01另一側

而不是擔心你可以比較成員的值。該案件的情況應該使用currentmember功能,並通過會員更換號碼:

CREATE MEMBER CURRENTCUBE.[Measures].[SBBD] 
AS CASE [Date].[Calendar Month Number Of Year].CURRENTMEMBER 
     WHEN [Date].[Calendar Month Number Of Year].[2] then [Measures].[SB]/28 
     WHEN [Date].[Calendar Month Number Of Year].[4] THEN [Measures].[SB]/30 
     WHEN [Date].[Calendar Month Number Of Year].[6] THEN [Measures].[SB]/30 
     WHEN [Date].[Calendar Month Number Of Year].[9] THEN [Measures].[SB]/30 
     WHEN [Date].[Calendar Month Number Of Year].[11] THEN [Measures].[SB]/30 
     ELSE[Measures].[SB]/31 
    END, 
FORMAT_STRING = "Standard", 
VISIBLE = 1 , ASSOCIATED_MEASURE_GROUP = 'LB'; 
+0

難道是有MDX中沒有案例說明? –

+0

@PaulKar。我的腳本沒有任何工作嗎?就微軟版本的「MDX」中的內容和內容而言,只需查看「MSDN」即可。情況肯定存在 - 由於計算通常在塊模式下運行時使用它並不是一個很好的功能,因爲它很慢,但有時它是唯一的選擇。 – whytheq

+0

這真的很奇怪,但沒有與案例陳述。我試過iif,並且有相同的邏輯工作。幽靈般的。我很抱歉沒有選擇你的答案。這是非常有幫助和詳盡的,謝謝你。我只是認爲不挑選它是公平的,因爲我無法得到案例工作(對於未來將查看此主題的人)。 –