在 MDX 中排名



我有这个MDX查询:

WITH
MEMBER [COUNT_RANK] AS
RANK(([TKT].[SP].CURRENTMEMBER,
[TKT].[SA].CURRENTMEMBER) ,
[TKT].[SP].CURRENTMEMBER
*[TKT].[SA].[SA]
)
SELECT {
[COUNT_RANK],
[Measures].[TKT Count],
[Measures].[Est Hours]
} ON 0,
ORDER ({[TKT].[SP].[SP]} * {[TKT].[SA].[SA]}, [Measures].[TKT Count], DESC)
ON 1
FROM Ops

我遇到的问题是,虽然COUNT_RANK工作并为每SP提供 1 到 n 的排名值SA,但我需要基于TKT Count desc的排名顺序。 对于rank = 1,则SP*SA必须具有最多的TKT。

现在的结果是排名的随机TKT计数。 如何根据 TKT 计数 DESC 进行排名?

这适用于 SQL Server 2016 SSAS。 谢谢。

在 MSDN 文档中,应在声明 RANK(( 成员之前创建一个有序集,并在有序集上使用 RANK 函数。

这是他们的例子:

WITH   
SET OrderedCities AS Order  
([Geography].[City].[City].members  
, [Measures].[Reseller Sales Amount], BDESC  
)  
MEMBER [Measures].[City Rank] AS Rank  
([Geography].[City].CurrentMember, OrderedCities)  
SELECT {[Measures].[City Rank],[Measures].[Reseller Sales Amount]}  ON 0   
,Order  
([Geography].[City].[City].MEMBERS  
,[City Rank], ASC)  
ON 1  
FROM [Adventure Works]

相关内容

  • 没有找到相关文章

最新更新