2016-05-17 57 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] 
      ) 
    )