我想基于此问题创建成员
我有一个产品A正在销售 我想找到连续几天没有销售的最大范围
示例:
第1,2,3天产品不销售,之后,它连续15天销售,第19天它没有卖2天,之后每天都卖出,直到月底
所以我没有出售的最长天数是3
答案 0 :(得分:0)
以下查询在Microsoft示例多维数据集Adventure Works中提供您想要的内容:
WITH Member Measures.[days without sales] AS
IIf( [Measures].[Internet Sales Amount] > 0
, 0
,(Measures.[days without sales], [Date].[Calendar].CurrentMember.PrevMember) + 1
)
Member Measures.[Max days without sales] AS
Max( [Date].[Calendar].[Date].Members
,Measures.[days without sales]
)
SELECT { [Measures].[Max days without sales] }
ON COLUMNS
FROM [Adventure Works]
WHERE [Product].[Product].&[486]
度量days without sales
是递归定义的,并返回直到并包括[Date].[Calendar]
层次结构的当前成员的天数没有销售。您可能需要调整“不销售”的标准,记住在MDX中,数字比较将NULL
视为0
- 这与SQL不同。
如果每天在此层次结构中有成员,则此度量只能正常工作,即。即这个层次结构中没有间隙。实际上,定义比仅工作几天更为通用:如果您使用[Date].[Calendar].CurrentMember
的月份,它将为您提供没有销售的月数等。它适用于层次结构的每个级别。
度量Max days without sales
在其定义中不包含产品,它为上下文中的任何内容提供了最大天数(在本例中为WHERE
子句中的产品)。
请注意 - 实际上在计算[Date].[Calendar]
时,Measures.[Max days without sales]
层次结构中的所有日子都存在循环,并且在此之内,递归会再次沿前几天迭代,并且每个单元格都会这样做在结果集中 - 对于大型报告,这可能会很慢。