MDX查询 - 子选择实现 - 选择除一个列之外的所有列的值

时间:2016-08-02 06:05:23

标签: mdx

我必须实现具有以下要求的查询。

1)我需要有多个条件(使用AND,OR)。 2)在某些情况下,我需要排除具有特定值的记录。

SELECT {...} ON Columns, {...} ON ROWS
FROM
  (SELECT {([Element1].[Value].&[98]&[002], [Element2].Value.&[Value1]), 
           ([Element1].[Value].&[98]&[004], [Element2].Value.&[Value2]),                                        ([Element1].[Value].&[98]&[005], [Element2].Value.NOTIN[value1, value2]), } ON    Columns
FROM [CubeName])

我已经提到过NOTIN [value1,value2])因为我不知道如何实现它。除了提到的那些,我必须得到所有的价值。如果有人能提供解决方案,请告诉我。

1 个答案:

答案 0 :(得分:0)

您通常会使用函数EXCEPT从集合中排除某些成员:

SELECT 
  {...} ON 0
, {...} ON 1
FROM
  (
    SELECT 
      EXCEPT(
        [Element1].[Value].[Value].MEMBERS    //<<name of the full set
       ,{    //<<the set to be excluded
          [Element1].[Value].&[98]&[002], 
          [Element1].[Value].&[98]&[004], 
          [Element1].[Value].&[98]&[005]
        } ON    0
     FROM [CubeName]
  );

以上内容可以扩展到元组,但第一个参数需要是交叉连接:

SELECT 
  {...} ON 0
, {...} ON 1
FROM
  (
    SELECT 
      EXCEPT(
         [Element1].[Hier1].[Hier1].MEMBERS 
       * [Element1].[Hier2].[Hier2].MEMBERS   //<<name of the full set
       ,{    //<<the set to be excluded
          ([Element1].[Hier1].[Hier1].&[Value1],[Element1].[Hier2].[Hier2].&[Value1]), 
          ([Element1].[Hier1].[Hier1].&[Value2],[Element1].[Hier2].[Hier2].&[Value2]), 
          ([Element1].[Hier1].[Hier1].&[Value3],[Element1].[Hier2].[Hier2].&[Value3]),
        } ON    0
     FROM [CubeName]
  );