如何在 MDX 查询中获得特定三天内销量最高的 3 件商品?

How can I get top 3 items sold in particular three days in MDX queries?

这是我的 MDX 查询。这将是在特定三天内售出的商品。此查询 returns 所有已售出的商品,但我希望仅获得特定日期的前 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])

使用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])