MDX订单不';行不通

MDX订单不';行不通,mdx,Mdx,我正在使用AdventureWorks多维数据集和MS SQL 2017学习MDX。 我想返回根据互联网销售额排名前五的产品子类别: SELECT Subset (Order ([Product].[Product Categories].[SubCategory].members ,[Measures].[Internet Sales Amount] ,DESC ) ,0 ,5 ) ON 0 FROM [Adventure Wor

我正在使用AdventureWorks多维数据集和MS SQL 2017学习MDX。 我想返回根据互联网销售额排名前五的产品子类别:

SELECT Subset

(Order

    ([Product].[Product Categories].[SubCategory].members

    ,[Measures].[Internet Sales Amount]

    ,DESC

    )

    ,0

    ,5

)
ON 0
FROM [Adventure Works]
返回的结果没有正确排序。我做错什么了吗

公路自行车山地自行车旅游自行车轮胎和内胎头盔

29358206.96美元26492684.38美元10451490.22美元925.21美元258712.93美元


我还尝试了BDESC,似乎得到了相同的结果。

您想要TOPCOUNT MDX函数吗

SELECT
[Measures].[Internet Sales Amount] ON COLUMNS
,   TOPCOUNT([Product].[Subcategory].[Subcategory].MEMBERS,5,[Measures].[Internet Sales Amount]) ON ROWS
FROM
[Adventure Works]

您需要TOPCOUNT MDX函数

SELECT
[Measures].[Internet Sales Amount] ON COLUMNS
,   TOPCOUNT([Product].[Subcategory].[Subcategory].MEMBERS,5,[Measures].[Internet Sales Amount]) ON ROWS
FROM
[Adventure Works]

这个查询将有助于解释发生了什么。它排序正确,但随后在屏幕上显示默认度量值,因为您没有指定要显示的度量值,只有要排序的度量值:

SELECT {[Measures].[Internet Sales Amount], [Measures].DefaultMember} on 0,
Subset
(Order
    ([Product].[Product Categories].[SubCategory].members
    ,[Measures].[Internet Sales Amount]
    ,DESC
    )
    ,0
    ,5
)
ON 1
FROM [Adventure Works]

我建议使用该查询,但删除
[Measures].DefaultMember
,您应该会得到预期的结果。

此查询将有助于解释发生的情况。它排序正确,但随后在屏幕上显示默认度量值,因为您没有指定要显示的度量值,只有要排序的度量值:

SELECT {[Measures].[Internet Sales Amount], [Measures].DefaultMember} on 0,
Subset
(Order
    ([Product].[Product Categories].[SubCategory].members
    ,[Measures].[Internet Sales Amount]
    ,DESC
    )
    ,0
    ,5
)
ON 1
FROM [Adventure Works]

我建议使用该查询,但删除
[Measures].DefaultMember
,您应该会得到预期的结果。

您好,谢谢!我会在家里测试,然后再给你回复。顺便问一句,订单不起作用有什么原因吗?因为我正在学习MSDN的教程。嗨,谢谢!我会在家里测试,然后再给你回复。顺便问一句,订单不起作用有什么原因吗?因为我正在学习MSDN的教程。嗨,谢谢!我会在家里测试,然后给你回复。嗨,谢谢!我会在家里测试,然后再给你回复。