计数产品在MDX查询中出售

时间:2015-05-04 10:35:45

标签: mdx

我的MDX查询为

SELECT 
  {[Measures].[SaleAMT]} ON COLUMNS
 ,NON EMPTY 
      [Account Date13h].[Date].&[2015-01-01T00:00:00]
    : 
      [Account Date13h].[Date].&[2015-05-05T00:00:00] ON ROWS
FROM [Sale_Period_report];

我想要返回销售的产品数量,就像那样:

Date         SaleAmt    ProductSold
2015-04-01   20.000     150
2015-04-02   36.212     650
2015-04-05   10.333     65

3 个答案:

答案 0 :(得分:0)

如果您有一个提供销售产品的指标,请使用此查询:

SELECT 
    {[Measures].[SaleAMT], [Measures].[ProductsSold]}  ON COLUMNS,

    NON EMPTY {[Account Date13h].[Date].&[2015-01-01T00:00:00]:
               [Account Date13h].[Date].&[2015-05-05T00:00:00]
              } ON ROWS
    FROM [Sale_Period_report]

如果您没有这样的衡量标准,我会假设您的多维数据集中有一个产品层次结构,例如Products.Product

在这种情况下,您必须创建一个计算成员,它将为您提供计数。

WITH MEMBER [Measures].[ProductsSold] AS
COUNT(
        EXISTS(Products.Product.CHILDREN, 
        {[Account Date13h].[Date].&[2015-01-01T00:00:00]:[Account Date13h].[Date].&[2015-05-05T00:00:00]},
        "Sales"       
     )

然后它是一样的:

SELECT 
    {[Measures].[SaleAMT], [Measures].[ProductsSold]}  ON COLUMNS,

    NON EMPTY {[Account Date13h].[Date].&[2015-01-01T00:00:00]:
               [Account Date13h].[Date].&[2015-05-05T00:00:00]
              } ON ROWS
    FROM [Sale_Period_report]

我假设您有一个名为Sales的度量值组。

要获得更好的答案,您必须提供更多详细信息。

希望它有所帮助!

答案 1 :(得分:0)

反对AdvWrks这种COUNTEXISTING和交叉联接的组合似乎给了我一个可变的结果 - 这个结果实际上意味着我很不确定:

WITH  
  MEMBER [Measures].[Count] AS 
    Count
    (
      (EXISTING 
          [Product].[Product Categories].[Product]
        * 
          [Measures].[Internet Sales Amount])
    ) 
SELECT 
  {
    [Measures].[Internet Sales Amount]
   ,[Measures].[Count]
  } ON COLUMNS
 ,
    [Date].[Calendar].[Date].&[20070701]
  : 
    [Date].[Calendar].[Date].&[20070731] ON ROWS
FROM [Adventure Works];

所以适应你的立方体可能看起来像:

WITH  
  MEMBER [Measures].[ProductsSold] AS 
    Count
    (
      (EXISTING 
          Products.Product.members
        * 
          [Measures].[SaleAMT])
    ) 
SELECT 
  {
    [Measures].[SaleAMT]
   ,[Measures].[ProductsSold]
  } ON COLUMNS
 ,NON EMPTY 
    {
        [Account Date13h].[Date].&[2015-01-01T00:00:00]
      : 
        [Account Date13h].[Date].&[2015-05-05T00:00:00]
    } ON ROWS
FROM [Sale_Period_report];

答案 2 :(得分:0)

WITH MEMBER [Measures].[ProductsSold] AS
    COUNT(NonEmpty([AccSetting].[AccID].[AccID].ALLMEMBERS, [Measures].[SaleAMT]))

我使用此查询并且OLAP正确返回我想要的内容