2016-04-04 63 views
0

我,我們準備在SQL查詢獲取相應的結果如何與頂尖計數使用集團在MDX查詢

SQL查詢 -

爲例
select partnerid,BrandDesc,ActualRetailValue 
from 
(
select DENSE_RANK() over (partition by partnerid order by sum(ActualRetailValue) desc) as rnk, 
partnerid,BrandDesc,sum(ActualRetailValue) as ActualRetailValue 
from JDASales 
where partnerid in (693,77) 
group by partnerid,BrandDesc 
) as A 
where rnk <=5 
order by partnerid,rnk 

輸出 -

enter image description here

我想用mdx查詢得到這個結果。即使用此代碼試用

SELECT 
    NON EMPTY 
    {[Measures].[Actual Retail Value]} ON COLUMNS 
,NON EMPTY 
     [DimBrands].[Brand].[Brand].ALLMEMBERS 
    * 
     TopCount 
     (
      [DimPartners].[Partner].[Partner].ALLMEMBERS 
     * 
      [DimSKU].[XXX Desc].[XXX Desc].ALLMEMBERS 
     ,5 
     ,[Measures].[Actual Retail Value] 
    ) ON ROWS 
FROM 
(
    SELECT 
    {[DimPartners].[Partner].&[1275]} ON COLUMNS 
    FROM 
    (
    SELECT 
     {[Dim Date].[Fiscal Year].&[2014-01-01T00:00:00]} ON COLUMNS 
    FROM [SALES] 
) 
) 
WHERE 
    [Dim Date].[Fiscal Year].&[2014-01-01T00:00:00]; 
+1

到底發生了什麼,當你運行該代碼?需要更多細節。 – SebTHU

+0

它沒有工作。 它只顯示前5條記錄。我想按品牌排列前5位數 – Niks

+0

您可以編輯顯示您從MDX獲得的實際輸出的問題嗎?另外,在問題中並不清楚你想要分組的內容。您的SQL輸出不可能來自您發佈的SQL代碼,因爲它包含不在SQL中的SKUDesc列。 – SebTHU

回答

1

你可以修改的行片斷使用GENERATE功能:

SELECT 
    NON EMPTY 
    {[Measures].[Actual Retail Value]} ON 0 
,NON EMPTY 
    GENERATE( 
    [DimBrands].[Brand].[Brand].ALLMEMBERS AS B 
    , 
    TopCount(
      B.CURRENTMEMBER 
     *[DimPartners].[Partner].[Partner].ALLMEMBERS 
     *[DimSKU].[XXX Desc].[XXX Desc].ALLMEMBERS 
     ,5 
     ,[Measures].[Actual Retail Value] 
    ) 
    ) ON ROWS 
... 
... 

該功能的使用在這裏詳細描述:https://msdn.microsoft.com/en-us/library/ms145526.aspx

+0

謝謝你sm :) ..它的工作。 – Niks