代码之家  ›  专栏  ›  技术社区  ›  good-to-know

如何在MDX查询中获取特定三天内售出的前三项商品?

  •  0
  • good-to-know  · 技术社区  · 9 年前

    这是我的MDX查询。这将是在特定三天内售出的商品。此查询返回所有已售出的商品,但我希望在特定日期仅获得前3个商品。

    我怎样才能得到这个?这是我的MDX查询:

    select
    {
        [Measures].[Quantity],
        [Measures].[Net Sales]
    }
    on columns,
    NON EMPTY
    ORDER
    (
        (
            [Products].[Item Description].children    
        ),
        [Measures].[Quantity], DESC
    )
        * [Calendar].[Date].[Date]
    on rows
    from
    (
    select 
    {
        [Calendar].[Date].&[2015-03-23T00:00:00],
        [Calendar].[Date].&[2015-03-22T00:00:00],
        [Calendar].[Date].&[2015-03-21T00:00:00]
    }
    ON columns
    
    FROM [SalesReport])
    
    1 回复  |  直到 9 年前
        1
  •  0
  •   SouravA    9 年前

    使用 TopCount 功能如下:

    select
    {
        [Measures].[Quantity],
        [Measures].[Net Sales]
    }
    on columns,
    NON EMPTY
    TopCount([Products].[Item Description].children * [Calendar].[Date].[Date], 
            3,
            [Measures].[Quantity])      
    on rows
    from
    (
    select 
    {
        [Calendar].[Date].&[2015-03-23T00:00:00],
        [Calendar].[Date].&[2015-03-22T00:00:00],
        [Calendar].[Date].&[2015-03-21T00:00:00]
    }
    ON columns
    
    FROM [SalesReport])
    

    要获取每个日期的前3条记录,您可以使用 GENERATE 功能:

    select
    {
        [Measures].[Quantity],
        [Measures].[Net Sales]
    }
    on columns,
    NON EMPTY
    GENERATE([Calendar].[Date].[Date],  
            TopCount([Products].[Item Description].children, 
                    3,
                    [Measures].[Quantity])  
            )   
    on rows
    from
    (
    select 
    {
        [Calendar].[Date].&[2015-03-23T00:00:00],
        [Calendar].[Date].&[2015-03-22T00:00:00],
        [Calendar].[Date].&[2015-03-21T00:00:00]
    }
    ON columns
    
    FROM [SalesReport])