2016-05-17 59 views
1

我是MDX世界的新手,我在哪裏clausule有一些懷疑。MDX查詢的兩個條件

我有這個疑問

WITH 
SET [~ROWS] AS 
    {[Product].[All Products]} 
SELECT 
NON EMPTY {[Measures].[Quantity]} ON COLUMNS, 
NON EMPTY [~ROWS] ON ROWS 
FROM [SteelWheelsSales] 
WHERE ([Time].[2003] : [Time].[2004]) 

,我想添加這個clausule到哪裏。

[Markets].[EMEA].[Ireland] 

我該怎麼辦?我已經試過這個:WHERE ([Time].[2003] : [Time].[2004], [Markets].[EMEA].[Ireland])

請幫幫我吧?

+0

當你說這是行不通的,你可以詳細一點? MDX WHERE子句不像SQL WHERE子句,但是所有的層次結構都是獨立的,因此沒有理由不能爲您的切片器軸創建集合表達式。 –

+0

@Caio:你可以嘗試'WHERE CrossJoin([Time]。[2003]:[Time]。[2004],[Markets]。[EMEA]。[Ireland])',因爲它在這裏完成:http:// stackoverflow.com/questions/17310762/how-can-i-write-an-mdx-query-that-slices-by-both-a-date-range-and-dimension-memb – user4637357

回答

0

如果您首先在WITH子句中聚合它,然後在WHERE中使用聚合它仍然抱怨?

WITH 
SET [~ROWS] AS 
    {[Product].[All Products]} 
SET [dts] AS 
    {[Time].[2003] : [Time].[2004]} 
MEMBER [Time].[All].[dts] AS 
    AGGREGATE([dts]) 
SELECT 
    NON EMPTY {[Measures].[Quantity]} ON COLUMNS, 
    NON EMPTY [~ROWS] ON ROWS 
FROM [SteelWheelsSales] 
WHERE ([Time].[All].[dts], [Markets].[EMEA].[Ireland]); 

但也許只是被WHERE子句中明確使用{..}幫助:

WITH 
SET [~ROWS] AS 
    {[Product].[All Products]} 
SELECT 
    NON EMPTY {[Measures].[Quantity]} ON COLUMNS, 
    NON EMPTY [~ROWS] ON ROWS 
FROM [SteelWheelsSales] 
WHERE (
    {[Time].[2003] : [Time].[2004]} 
    , [Markets].[EMEA].[Ireland]); 
+0

這兩種解決方案都沒有鍛鍊。我已經嘗試了第二個。當我做: 哪裏([市場]。[EMEA]。[愛爾蘭])正常工作。 –

+0

如果你說'WHERE WHERE([Time]。[2003])'你會得到什麼?此外,如果你說'WHERE WHERE([Time]。[2004])'你會得到什麼?請告訴我兩個結果。 – whytheq

+0

如果我把兩個地方,不工作。但只有一個WHERE工作正常 –

0

不知道爲什麼@ whytheq的解決方案並沒有爲你工作。這是類似的,應該工作:

WITH 
SET [~ROWS] AS 
    {[Product].[All Products]} 
SELECT 
NON EMPTY {[Measures].[Quantity]} ON COLUMNS, 
NON EMPTY [~ROWS] ON ROWS 
FROM [SteelWheelsSales] 
WHERE ({[Time].[2003] : [Time].[2004]} * {[Markets].[EMEA].[Ireland]}) 

或者你可以去嵌套子選擇:

WITH 
SET [~ROWS] AS 
    {[Product].[All Products]} 
SELECT 
NON EMPTY {[Measures].[Quantity]} ON COLUMNS, 
NON EMPTY [~ROWS] ON ROWS 
FROM (
     SELECT [Markets].[EMEA].[Ireland] ON 0 
     FROM (
      SELECT {[Time].[2003] : [Time].[2004]} ON 0 
      FROM [SteelWheelsSales] 
      ) 
    )