2013-06-24 37 views
1

我有這樣的where子句中的SQL語言:SQL來MDX轉換

where (cond1=1 or cond2=1) and cond3=1 

我怎樣才能得到這樣的結果在MDX與切片(條件到哪裏)?

{[cond1].&[1],[cond2].&[1]} /*and*/ {[cond3].&[1]} 

感謝

回答

1

嘗試使用子多維數據集:

Select 
    -- YOUR SELECTED MEASURES AND DIMENSIONS 
    From 
    (
    Select 
     {[cond1].&[1],[cond2].&[1]} on 0 
     ,{[cond3].&[1]} on 1 
    -- ,{more slices} on x 
    From [CubeName] 
    ) 

希望這有助於!

0

您可以使用上述的子多維數據集表達式,但這不是唯一的選擇。如果使用子多維數據集,則會大大提高查詢性能(假設您不在其中執行交叉連接)。

您也可以使用一般的WHERE最後一個表達式關鍵字後,返回立方體:

select 
{ .. } on 0, 
{ .. } on 1 
from (select { [Dim1].[X].allmembers } on 0) 
where ([Dim2].[Y].&[Y1]) 

或者:

select 
{ .. } on 0, 
{ .. } on 1 
from (select { [Dim1].[X].allmembers } on 0) 
where {[DimTime].[Time].[Year].&[2001] : [DimTime].[Time].[Year].&[2015]} 

這是在執行結束時應用,這意味着可能會降低性能。但是,如果您需要將外部過濾器應用於所有軸,則這是您需要的選項。

另一種方式來過濾成員的值是使用元組表達式:

with member LastDateSale as ((Tail(EXISTING [DimTime].[Time].[Dates].members,1), [Measures].[ActualSales])) 

這將帶你DimTime軸,適用於外部濾波器,從它那裏得到的最後一個元素,併爲其計算[ActualSales],如果可能的話。