如何反转从父子到父子的SSRS递归层次排序

时间:2016-05-18 12:46:24

标签: reporting-services mdx ssrs-2008-r2

我试图在SSRS 200R2的报告中反转递归层次结构的排序。该报告是在包含所需层次结构的SSAS多维数据集上构建的。

我阅读了这个主题的答案: SSRS ignores sort in a recursive hierarchy我理解我无法对关卡之间的层次结构进行排序。但是,我想要做的是将从Parent-Child到Child-Parent的排序反转,而不是在级别之间进行排序,而我找不到办法。

这是我的意思的一个例子:

员工的递归层次结构和总计度量出现如下:

self.view

我希望看到相同的信息,但我希望孩子们出现在顶部,而父母则出现在其组的底部:

Employee | Measure
------------------
Peter    | 10
  Adam   | 3
  Zelda  | 7
James    | 20
  Becky  | 15
  Paul   | 5

我尝试添加一个新字段“employee_level”,它表示我用于创建报告的员工层次结构中的员工级别,但是按“employee_level”排序Tablix没有做任何事情。

以下是我在MDX中用来获取上述输出的查询:

Employee | Measure
------------------
  Adam   | 3
  Zelda  | 7
Peter    | 10
  Becky  | 15
  Paul   | 5
James    | 20

是否有可能实现上述逆转?如果是这样,怎么样?

编辑: 我要做的是在 SSRS报告中获得相反的顺序。将ORDER添加到MDX不会影响结束报告。

1 个答案:

答案 0 :(得分:0)

您可以在ORDER子句中使用SELECT函数吗?

WITH  
SET [Filter_Employee_Hierarchy] AS 
  FILTER (
    [Employees].[Emp_Id].ALLMEMBERS 
  , [Measures].[Sum] > 0 
  )
SET [Filter_Employee_Hierarchy_ORDERED] AS
 ORDER(
    HIERARCHIZE([Filter_Employee_Hierarchy])
   ,[Measures].[Employee_Level]
   ,BDESC  
  )
MEMBER [Measures].[RNKforOrdering] AS
  RANK(
     [Employees].[Emp_Id].CURRENTMEMBER
    ,[Filter_Employee_Hierarchy_ORDERED]
  )
MEMBER [Measures].[Employee_Level] AS
  [Employees].[Emp_Id].CURRENTMEMBER.LEVEL.ORDINAL 
MEMBER [Measures].[Employee] AS
  [Employees].[Emp_Id].MEMBER_CAPTION
MEMBER [Measures].[Employee_Parent] AS 
  [Employees].[Emp_Id].PARENT.MEMBER_CAPTION
SELECT 
  { 
    [Measures].[Sum]
  , [Measures].[Employee_Level] 
  , [Measures].[Employee_Parent] 
  , [Measures].[RNKforOrdering]
  } ON 0, 
  [Filter_Employee_Hierarchy_ORDERED] ON 1
FROM [Cube];