1

我想获得超过 30 天销售额为零的产品。例如,下面是我的预期结果: Store,Product,Days Store1, product1, 33 Store1, product2, 100 Store2, product5, 96 Store34, product14, 78 Store100, product9, 47

所以我写了下面的查询:</p>

WITH 
MEMBER [Measures].[Zero Sales Days] 
AS 
COUNT(
     FILTER(
            NONEMPTY( [Calendar].[Date].[Day],[Measures].[POS Qty])                   
             , ( [Measures].[POS Qty]=0)
            ) 
 )

SELECT 
([Store].[Store].[Store],[product].[product].[product]) on 1,
([MEASURES].[Zero Sales Days]) ON 0
FROM [testcube]

问题是:如何过滤案例:零销售天数<30

谢谢,尼亚


我做了一些更改,然后针对我的数据库运行。如果我添加了 where 原因,我什么也得不到。如果不是,则结果为“#Error”。

我不需要选择任何与时间相关的维度。我想要为报告做的是:选择商店和产品维度,并定义一个计算度量来获取计数。博彦,如果您需要详细的查询,我将不胜感激。

4

2 回答 2

2

The function LastPeriods is what you're looking for:

 WITH 
  MEMBER [Measures].[Zero Sales Days] 
  AS COUNT(
        FILTER([Calendar].[Date].[Day], 
          SUM( LastPeriods(30, [Calendar].[Date].currentmember),[Measures].[POS Qty]) 
          = 0 )
        ) 
 SELECT 
  ([Store].[Store].[Store],[product].[product].[product]) on 1,
  ([MEASURES].[Zero Sales Days]) ON 0
 FROM [testcube]
于 2011-07-28T11:43:19.987 回答
1

以下查询适用于 Adventure Works,并显示自 WHERE 子句中的日期起超过 30 天没有销售的产品:

WITH
MEMBER [Measures].[Number of Periods With No Sales] AS
    Iif(([Date].[Date].CurrentMember, [Measures].[Internet Sales Amount])=0,
        ([Date].[Date].PrevMember, [Measures].[Number of Periods With No Sales])+1,
        NULL
    )
MEMBER [Measures].[Number of > 30 Periods With No Sales] AS
    Sum(
        Iif([Measures].[Number of Periods With No Sales] > 30,
            [Measures].[Number of Periods With No Sales],
            NULL
        )
    )
SELECT
{
    [Measures].[Number of > 30 Periods With No Sales]
} ON 0,
NON EMPTY {
    [Product].[Product Categories].[Product]
} ON 1
FROM [Adventure Works]
WHERE [Date].[Calendar].[Date].&[860]

您将需要重新处理它(更改维度/度量名称)以使其适用于您的数据库。请让我知道您是否需要一个查询,它可以为您提供所有产品,无论日期如何,这些产品至少有一个超过 30 天且没有销售的时期(例如,没有销售的最长时期,或任意此类时期)。这将需要一些更改。此外,由于查询使用递归,它可能会很慢 - 如果它太慢,我们可以看到如何提高其性能 - 这可能需要更改您的数据模型以支持这一点分析。

于 2011-07-29T07:08:15.353 回答