【问题标题】:MDX WHERE: "AND" between several conditionsMDX WHERE:几个条件之间的“AND”
【发布时间】:2010-10-27 06:41:15
【问题描述】:

这个 MDX 请求有效

SELECT [Measures].salescount ON COLUMNS,
[Date].[2010] ON ROWS
FROM [SalesAnalysis]
WHERE [Area].[Shanghai]

这个也有效(不同的 WHERE 条件):

SELECT [Measures].salescount ON COLUMNS,
[Date].[2010] ON ROWS
FROM [SalesAnalysis]
WHERE EXCEPT([Product].[All Products].Children, {[Product].[All Products].[#null]})

问题:我如何编写具有两种条件的请求?
即区域条件和产品条件

我尝试了,AND,但到目前为止没有运气。

【问题讨论】:

    标签: mdx business-intelligence pentaho


    【解决方案1】:

    我猜你需要在切片器中定义一个集合:

    SELECT [Measures].salescount ON COLUMNS,
    [Date].[2010] ON ROWS
    FROM [SalesAnalysis]
    WHERE 
         [Area].[Shanghai] 
         * EXCEPT([Product].[All Products].Children
                 , {[Product].[All Products].[#null]})
    

    注意MDX slicer不是SQL WHERE语句;您可能会改为查看 MDX 子选择。

    【讨论】:

    • 感谢它的工作!详细信息:查询末尾缺少右括号,您可能需要添加它。
    【解决方案2】:

    使用* 而不是AND,。 有用 欢迎您

    【讨论】:

    • 你介意写下整个查询,让事情更清楚吗?非常感谢!
    【解决方案3】:

    这应该会产生您需要的结果:(子选择)

    SELECT [Measures].salescount ON COLUMNS,
    [Date].[2010] ON ROWS
    FROM (SELECT [Area].[Shanghai] on 0 from [SalesAnalysis])
    WHERE EXCEPT([Product].[All Products].Children, {[Product].[All Products].[#null]})
    

    【讨论】:

    • 显然我的 MDX 引擎(蒙德里安)不喜欢这个子选择:蒙德里安错误:第 3 行第 7 列的语法错误,令牌'('
    【解决方案4】:

    也许这样的事情会起作用

    SELECT [Measures].salescount ON COLUMNS, [日期].[2010]在行 FROM [销售分析] 在哪里 StripCalculatedMembers(交叉连接( {[地区].[上海]}, EXCEPT([Product].[All Products].Children, {[Product].[All Products].[#null]})))

    【讨论】:

      【解决方案5】:
      SELECT 
          [Measures].salescount ON COLUMNS,
          [Date].[2010] ON ROWS
      FROM 
         [SalesAnalysis]
      WHERE  
         {   
             [Product].[All Products].Children, 
             [Product].[All Products].[#null] 
         }
      

      【讨论】:

      • ??上海条件未出现在您的请求中。
      • 我尝试了一些从你的语法中得到启发的东西,但它不起作用。我不能用逗号将我的两个条件放在同一个荣誉中,我得到:蒙德里安错误:函数“{}”的所有参数必须具有相同的层次结构。
      【解决方案6】:

      如上所述,您可以使用 * 代替 AND。

      例子:

      select {[Measures].Members} ON COLUMNS, 
             {[Product].Members} ON ROWS
             from [data_cube]
             where {[Location].[New York] * [Time].[2015]}
      

      在你的情况下应该是这样的:

      SELECT [Measures].salescount ON COLUMNS,
      [Date].[2010] ON ROWS
      FROM [SalesAnalysis]
      WHERE EXCEPT([Product].[All Products].Children, {[Product].[All Products].[#null]}) * [Area].[Shanghai]
      

      【讨论】:

        猜你喜欢
        • 2020-06-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多