2017-03-03 69 views
0

我遇到MDX查詢問題。MDX - 具有OR條件的不同維度上的多個過濾器

我有一個measure: WEIGHT 和兩個dimensions:DESTINATION和SOURCE 具有相同attribute: NAME and TYPE

我要回:

SUM of WEIGHT 
where 
    DESTINATION.TYPE="A" 
    **OR** 
    SOURCE.TYPE="B" 
    **AND** 
     (DESTINATION.TYPE **<>** SOURCE.TYPE) 

如果嘗試這個辦法:

SELECT NON EMPTY { 
    [Measures].[Weight] 
} 
ON COLUMNS, 
NON EMPTY { 
    ([Source].[Name].[Name].ALLMEMBERS * [Destination].[Name].[Name].ALLMEMBERS) 
} 
ON ROWS 
FROM 
(SELECT ({ [Source].[Type].&[A] }) ON COLUMNS FROM (SELECT ({ [Destination].[Type].&[B] }) 
    ON COLUMNS FROM [CUBE])) WHERE ([Destination].[Type].&[B], [Source].[Type].&[A]) 

但它不」工作。

在SQL它看起來像

Select source.name, destination.name, sum(weight) from cube 
where 
(source.type = "A" or destination.type = "b") 
and 
(source.type <> destination.type) 
group by source.name, destination.name, source.type, destination.type 

回答

0

你從部分是有點亂。請嘗試以下操作:

SELECT 
NON EMPTY { [Measures].[Weight] } ON COLUMNS, 
NON EMPTY { [Source].[Name].[Name].ALLMEMBERS * [Destination].[Name].[Name].ALLMEMBERS } ON ROWS 
FROM [CUBE] 
WHERE ({[Destination].[Type].&[B]} * {[Source].[Type].[All]} + {[Destination].[Type].[All]} * {[Source].[Type].&[A]}) 
+0

但它還是回到我只重量的總和,其中[目標] [類型]及[B] **和** [來源] [類型] [A]。。。我想在[Destination]。[Type]。&[B] ** OR ** [Source]中使用條件。[Type]。[A] – KosteK

+0

I Add yet:WHERE({[Destination]。[Type]。 &[B]} * {EXCEPT([Source]。[Type]。[All] .Children,[Source]。[Type]。&[A]} + {EXCEPT([Destination]。[Type]。[All ] .Children,[Destination]。[Type]。&[B]} * {[Source]。[Type]。&[A]})and work ** GREAT **謝謝 – KosteK

+0

相關知識。它的答案是爲了讓其他人知道這個問題已經解決了。 –