INF: MDX: How to Query for the 10 Best Customers and the Top 5 Products for Each Customer

This article was previously published under Q304386
This article has been archived. It is offered "as is" and will no longer be updated.
A common question for any business is "Who are our 10 best customers and what are the 5 top products they purchase"? This article shows you how to use a Multidimensional expression (MDX) query, which answers the preceding question, by using a Named Set.
The following is a sample query against the FoodMart 2000 database that is provided with Microsoft Analysis Services 2000. You can run the following query in the MDX sample application that is also provided with Analysis Services.

--The top 10 customers can be defined in a named set, using the TopCount--function to limit the set and to return the names of the customers with--the 10 highest Units Sales for the year 1997. WITH SET Top10Cust AS 'TopCount( { [Customers].[Name].Members }, 10, ([Time].[1997], [Unit Sales]) )'--Then use the Generate and CrossJoin functions in the body of the query--to combine the Top10Cust Named Set with the top 5 products for those--customers. SELECT { [Time].[1997] } ON COLUMNS , Generate( {Top10Cust}, CrossJoin( {Customers.CurrentMember}, TopCount([Product].[Product Name].Members, 5, ([Time].[1997], [Unit Sales])))) ON ROWS FROM [Sales] 				


For more information about the Generate, CrossJoin, and TopCount MDX functions as well as Named Sets, refer to Microsoft SQL Server 2000 Books Online.
OLAP BIHowto MDX Sample example

Article ID: 304386 - Last Review: 12/06/2015 04:20:01 - Revision: 2.2

Microsoft SQL Server 2000 Analysis Services

  • kbnosurvey kbarchive kbinfo KB304386