2017-08-11 107 views
0

Dears:发行订购MDX查询结果

我有以下MDX查询。

WITH 
    MEMBER [Measures].[Member Full Path] AS 
     [Revenuedim_Client].CurrentMember.UniqueName 
    MEMBER [Measures].[Member Ordinal] AS 
     [Revenuedim_Client].CurrentMember.Ordinal 

    SELECT 
    NON EMPTY 
    Hierarchize(
    Union(
      Crossjoin([Measures].[BeaconAmount_USD] ,  
      LastPeriods(12,[Date.YQM].lastChild.lastChild.lastChild) 
      ) 
     , 
     Crossjoin({[Measures].[Member Ordinal], [Measures].[Member Full Path]},[Date.YQM].[2018]) 
    ) 
    ,POST) ON COLUMNS, 
     TOGGLEDRILLSTATE(
      TOGGLEDRILLSTATE(
       TOGGLEDRILLSTATE(
        TOGGLEDRILLSTATE(
         {[Revenuedim_Client].[All Clients] } , 
         {[Revenuedim_Client].[All Clients] } 
        ) 
       , {[Revenuedim_Client].[Group Client - Altria Group Inc.] } 
       ), {} 
      ), {} 
     ) ON ROWS from [Revenue_Client] 

这给我的输出如下:

在行:客户端(有4个级别向下钻取最多项目级别) 在列:12个月+在电池满员路径 列:收入

查询可以如何或在哪里添加ORDER语句,以便根据12个月的总收入和大多数收入太少的收入对行进行排序,对于Revenuedim_client中的每个4个级别层次?

+0

订单定义在这里:https://docs.microsoft.com/en-us/sql/mdx/order-mdx ...你是否尝试过应用它? – whytheq

+0

事实上,它是如此简单:\t'ORDER( \t \t \t TOGGLEDRILLSTATE( \t \t \t \t TOGGLEDRILLSTATE( \t \t \t \t \t TOGGLEDRILLSTATE( \t \t \t \t \t \t TOGGLEDRILLSTATE( \t \t \t \t \t {[Revenuedim_Client]。[全部C lients]}, \t \t {$ {param_level1_m}} \t \t) \t \t,{$ {param_level2_m}} \t),{$ {param_level3_m}} \t),{$ {param_level4_m}} ) ,[措施]。 $ {MarketOrBeacon}, DESC)' – user1186098

回答

0

我认为为了让事情变得更清楚一些,将12月设置为WITH子句 - 然后添加一个成员聚合它 - 然后使用由这个新成员组成的元组以及收入作为ORDER函数的数字参数。

WITH 
    MEMBER [Measures].[Member Full Path] AS 
    [Revenuedim_Client].CurrentMember.UniqueName 
    MEMBER [Measures].[Member Ordinal] AS 
    [Revenuedim_Client].CurrentMember.Ordinal 
    SET [12mth] AS 
    LastPeriods 
    (12 
    ,[Date.YQM].LastChild.LastChild.LastChild 
    ) 
    MEMBER [Date.YQM].[All].[12mth_Agg] AS 
    Aggregate([12mth]) 
SELECT 
    NON EMPTY 
    Hierarchize 
    (
     Union 
     (
     CrossJoin 
     (
      [Measures].[BeaconAmount_USD] 
     ,[12mth] 
     ) 
     ,CrossJoin 
     (
      { 
      [Measures].[Member Ordinal] 
      ,[Measures].[Member Full Path] 
      } 
     ,[Date.YQM].[2018] 
     ) 
    ) 
    ,POST 
    ) ON COLUMNS 
,Order 
    (
    ToggleDrillState 
    (
     ToggleDrillState 
     (
     ToggleDrillState 
     (
      ToggleDrillState 
      (
      {[Revenuedim_Client].[All Clients]} 
      ,{[Revenuedim_Client].[All Clients]} 
     ) 
     ,{[Revenuedim_Client].[Group Client - Altria Group Inc.]} 
     ) 
     ,{} 
    ) 
    ,{} 
    ) 
    ,[Date.YQM].[All].[12mth_Agg] //<<think I prefer to explicitly add what I'm ordering by 
    ,DESC 
) ON ROWS 
FROM [Revenue_Client];