Ssas MDX:两个组的前X名和两个组中的一个组的前Y名(X>;Y)

Ssas MDX:两个组的前X名和两个组中的一个组的前Y名(X>;Y),ssas,mdx,olap-cube,Ssas,Mdx,Olap Cube,我试图写一个查询,根据年份和产品显示互联网销售额前4名。同时,我试图仅根据年份显示排名前1的经销商销售额 我写了一个如下的查询,以实现按年份和产品划分的前4名互联网销售额,但不知道如何将下一个指标添加到结果集中 WITH SET [TopSalesbyYearAndProd] AS Generate ( [Date].[Calendar Year].[Calendar Year].MEMBERS ,TopCount (

我试图写一个查询,根据年份和产品显示互联网销售额前4名。同时,我试图仅根据年份显示排名前1的经销商销售额

我写了一个如下的查询,以实现按年份和产品划分的前4名互联网销售额,但不知道如何将下一个指标添加到结果集中

WITH 
  SET [TopSalesbyYearAndProd] AS 
    Generate
    (
      [Date].[Calendar Year].[Calendar Year].MEMBERS
     ,TopCount
      (
          [Date].[Calendar Year].CurrentMember
        * 
          [Product].[Product].[Product].MEMBERS
       ,4
       ,[Measures].[Internet Sales Amount]
      )
    ) 
SELECT 
  {[Measures].[Internet Sales Amount]} ON 0
 ,NON EMPTY 
    {[TopSalesbyYearAndProd]} ON 1
FROM [Adventure Works];

这似乎有效-可能有一种更优雅的方式,但我没有发现:

WITH 
  SET [TopSalesbyYearAndProd] AS 
    Generate
    (
      [Date].[Calendar Year].[Calendar Year].MEMBERS
     ,TopCount
      (
          [Date].[Calendar Year].CurrentMember
        * 
          [Product].[Product].[Product].MEMBERS
       ,4
       ,[Measures].[Internet Sales Amount]
      )
    ) 
  MEMBER [Measures].[TopResellerAmount] AS 
    (
      Generate
      (
        {[Date].[Calendar Year].CurrentMember}
       ,TopCount
        (
            [Date].[Calendar Year].CurrentMember
          * 
            [Product].[Product].[Product].MEMBERS
         ,1
         ,[Measures].[Reseller Sales Amount]
        )
      ).Item(0).Item(1)
     ,[Measures].[Reseller Sales Amount]
    ) 
SELECT 
  {
    [Measures].[Internet Sales Amount]
   ,[Measures].[TopResellerAmount]
  } ON 0
 ,NON EMPTY 
    {[TopSalesbyYearAndProd]} ON 1
FROM [Adventure Works];

谢谢你。一旦你知道了这个优雅的版本,请立即发布。@sagarpant-同上:如果你在我之前找到它,请发布!
WITH 
  SET [TopSalesbyYearAndProd] AS 
    Generate
    (
      [Date].[Calendar Year].[Calendar Year].MEMBERS
     ,TopCount
      (
          [Date].[Calendar Year].CurrentMember
        * 
          [Product].[Product].[Product].MEMBERS
       ,4
       ,[Measures].[Internet Sales Amount]
      )
    ) 
  MEMBER [Measures].[TopResellerAmount] AS 
    (
      Generate
      (
        {[Date].[Calendar Year].CurrentMember}
       ,TopCount
        (
            [Date].[Calendar Year].CurrentMember
          * 
            [Product].[Product].[Product].MEMBERS
         ,1
         ,[Measures].[Reseller Sales Amount]
        )
      ).Item(0).Item(1)
     ,[Measures].[Reseller Sales Amount]
    ) 
SELECT 
  {
    [Measures].[Internet Sales Amount]
   ,[Measures].[TopResellerAmount]
  } ON 0
 ,NON EMPTY 
    {[TopSalesbyYearAndProd]} ON 1
FROM [Adventure Works];