2011-04-18 52 views
1

我實際上使用SQL Server Reporting Services工作在SSAS多維數據集上。 爲了過濾字段,我需要使用專門使用參數的計算成員。如何在MDX計算的成員中傳遞多值參數?

這是我計算的成員:

WITH MEMBER [Measures].[Comparable Stock Room] AS Iif (
    [Stock room].[Stock room code].currentMember IS (Iif (STRTOMEMBER(@StockRoomCode).Count = 1, STRTOMEMBER(@StockRoomCode), xxx)), 
    0, 
    [Measures].[Retail sales amount invoiced including tax] 
) 

這種運作良好,如果@StockRoomCode只有一個值。但是當參數有多個值時,我不知道如何使它工作。如何取代'xxx'? 你能幫我一下,或者告訴我怎麼做更好的方法,謝謝!

回答

1

您可以創建一個計算的成員聚集要對報告和計算成員的電信設備製造商定義的措施的成員,是這樣的:

with member [Stock Room].[Stock room code].[foo] as 
aggregate (strtoset (@StockRoomCode)), 

member [Measures].[Comparable Stock Room] as 
([Stock Room].[Stock room code].[foo], 
[Measures].[Retail sales amount including tax]) 

(注:沒有測試過,就頂我的頭)。或者,

with set [foo] as strtoset (@StockRoomCode), 

member [Measures].[Comparable Stock Room] as 
     sum ([foo], [Measures].[Retail sales amount including tax]) 

select [Measures].[Comparable Stock Room] on columns, 
     (Slicing dimension such as time) on rows 
    from [cube] 
where [other slice] 

請注意,使用其中一種方法,讓您的表達式正確並首先進行測試。

+0

感謝您的幫助!我嘗試了你所說的並且沒有奏效......即使有一個值爲@StockRoomCode,它仍然對列Comparable Stock Room表示空值。 – Flesym 2011-04-21 05:17:24

+0

嘗試按部件構建。 – ConcernedOfTunbridgeWells 2011-04-21 10:06:53

+0

按零件建立它是我嘗試的第一件事情,當它開始讓我失望時... @StockRoomCode每次使用它時都會說'NULL',我不能找到一種方法將值顯示到列中......這是瘋狂的原因'當我在條件(Iif ...)中使用它時,它能夠檢索正確的值... – Flesym 2011-04-22 07:56:50