我使用AdventureWorks Cube和MS SQL 2017来学习MDX。 我想根据互联网销售额返回产品的前五大销售子类别:
SELECT Subset
(Order
([Product].[Product Categories].[SubCategory].members
,[Measures].[Internet Sales Amount]
,DESC
)
,0
,5
)
ON 0
FROM [Adventure Works]
返回的结果未正确排序。有什么我做错了吗?
Road Bikes Mountain Bikes Touring Bikes Tires and Tubes Helmets
$ 29,358,206.96 $ 26,492,684.38 $ 10,451,490.22 $ 925.21 $ 258,712.93
我也试过BDESC,似乎得到了相同的结果。
答案 0 :(得分:2)
此查询将有助于解释发生的情况。它正确排序,但之后它在屏幕上显示默认度量,因为您没有指定要显示的度量,只有要按排序的度量:
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]
,您应该得到预期的结果。
答案 1 :(得分:1)
您想要TOPCOUNT MDX功能
SELECT
[Measures].[Internet Sales Amount] ON COLUMNS
, TOPCOUNT([Product].[Subcategory].[Subcategory].MEMBERS,5,[Measures].[Internet Sales Amount]) ON ROWS
FROM
[Adventure Works]