2017-08-13 6 views
1

Je suis en train d'écrire une requête qui montre TOP 4 Internet Montant des ventes basé sur ans et produit. Et, en même temps, j'essaye de montrer TOP 1 Ventes de revendeur Montant basé sur année seulement.MDX: Top X par deux groupes et Top Y (X> Y) par l'un des deux groupes

Year  Product   Internet Sales Amount  Reseller Sales Amount 
CY 2015 Road-150 Red, 48  $153,215      $25,021 
CY 2015 Road-150 Red, 68  $101,215      $25,021 
CY 2015 Road-150 Red, 22   $93,215      $25,021 
CY 2015 Road-250 Red, 52   $90,215      $25,021 
CY 2014 Road-150 Red, 100  $202,215      $60,021 
CY 2014 Road-220 Black, 90  $180,101      $60,021 
CY 2014 Road-65 Blue, 28  $139,465      $60,021 
CY 2014 Road-86 Red, 33   $100,001      $60,021 

J'ai écrit une requête suivante pour obtenir la vente Top 4 Internet Montant par année et produit, mais ne pouvait pas comprendre comment ajouter la mesure suivante du ResultSet.

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]; 

Répondre

1

Cela semble fonctionner - il y a probablement une façon beaucoup plus élégante, mais je n'ai pas trouvé:

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]; 
+0

whytheq Remercier. S'il vous plaît postez une fois que vous connaissez la version élégante de cela. –

+0

@sagarpant - DITTO: si vous le trouvez avant moi, postez! – whytheq