2014-02-19 49 views
1

我找不到出路,怎麼我的查詢進行排序,這是簡單的查詢:MDX相當複雜的排序

SELECT {[Measures].[IB]} 
     ON COLUMNS, 
     {[Dim_Product_Models_new].[PLA].members } * 
     {[Dim Dates_new].[Date Full].&[2013-02-01]:[Dim Dates_new].[Date Full].&[2014-01-01]} 
     ON ROWS 
    FROM [cub_dashboard_spares] 

的認爲,我會得到6個PLA的組合在12個結果幾個月(總計72行),但它在PLA上按字母順序排序。

我需要的是根據上個月的測量(本例中爲2014-01-01)對PLA進行排序。

是否有任何方法可以執行此任務,以便保持分組(2013-20至2013-12的PLAs,日期),但只有我的PLA的順序不同。 (PLA在上個月最高的措施是第一次,依此類推)

非常感謝你對任何形式的幫助

回答

1

只需使用Order函數將排序集放在行上。如果要在每個層次結構級別內進行排序,但仍希望在子級之前獲得父級(如單個屬性成員之前的所有ALL),則此功能的第三個參數爲DESC,如果要在所有級別之間進行排序,則爲BDESC

SELECT {[Measures].[IB]} 
     ON COLUMNS, 
     Order({[Dim_Product_Models_new].[PLA].members }, 
      ([Measures].[IB], [Dim Dates_new].[Date Full].&[2014-01-01]), 
      DESC) 
     * 
     {[Dim Dates_new].[Date Full].&[2013-02-01]:[Dim Dates_new].[Date Full].&[2014-01-01]} 
     ON ROWS 
    FROM [cub_dashboard_spares] 
+0

輝煌,它工作完美,謝謝你 – Peter

1

在交叉連接應保留第一套初始訂單的訂貨功能,使倒車元組的順序將做的工作:

SELECT 
    { 
    [Measures].[IB] 
    } ON COLUMNS, 
    order( 
{[Dim Dates_new].[Date Full].&[2013-02-01]:[Dim Dates_new].[Date Full].&[2014-01-01]} * 
{[Dim_Product_Models_new].[PLA].members } , 
[Measures].[IB], 
desc 
) ON ROWS 
FROM [cub_dashboard_spares] 

如果您想保留列標籤的外觀奧德,你可以在下面的例子中使用生成函數就像從AW立方體:

SELECT 
    {[Measures].[Internet Sales Amount]} ON 0 
,Generate 
    (
    {[Customer].[Country].&[Australia]:[Customer].[Country].&[United Kingdom]} 
    ,(
     Order 
     (
     [Date].[Calendar Year].[Calendar Year].MEMBERS 
     ,(
      [Customer].[Country].CurrentMember 
     ,[Measures].[Internet Sales Amount] 
     ) 
     ,DESC 
    ) 
    ,[Customer].[Country].CurrentMember 
    ) 
) ON 1 
FROM [Adventure Works]; 

Philip,