2013-08-05 45 views
1

我有一个用户层次结构,并且我想只在用户有子级时展开和向下钻取。如果层次结构中的成员没有孩子,我想隐藏此成员。如果当前成员有子级,则展开用户层次结构 - MDX

以下查询获取所有在层次结构1中的人,但我只想显示那些至少有子成员的人。

 
    with member [Test] as '0' 
SELECT 
{ [Test] } ON COLUMNS, non empty 
{ 
( 

    [Dim User].[UserHierarchy].[UserLevel1].AllMembers 

) 
}Dimension Properties MEMBER_CAPTION, 
MEMBER_UNIQUE_NAME ON ROWS 
FROM [Activities] 

我该如何做到这一点?用户层次结构是一个衣衫褴褛的。

回答

2
WITH 
    MEMBER [Measures].[Test] AS 
     0 
SELECT 
    { 
     [Test] 
    } ON 0, 
    NON EMPTY { 
     FILTER (
      [Dim User].[UserHierarchy].[UserLevel1].AllMembers 
      ,[Dim User].[UserHierarchy].CurrentMember.Children.Count > 0 
     ) 
    } ON 1 
FROM [Activities] 
+0

谢谢你的回答比尔。如果我想显示层次结构,例如从Level1到Level8,我会如何塑造您的答案,让我展示父母的完整层次结构?你的回答只能隐藏层级中的成员,但他们的数字仍然显示在措施中? – Mez

0

对于其他人谁有同样的问题,而且是Excel的那种效果,用户层次结构的尺寸仅扩大了父母后,这是做它的方式:

 
WITH 
    MEMBER [Measures].[Test] AS 
     0 
SELECT 
    { 
     [Test] 
    } ON 0, 
    NON EMPTY { 
     filter (
      {[dim user].[userhierarchy].[userlevel1].allmembers } 
      ,[dim user].[userhierarchy].currentmember.children.count > 1 
     ), 
     filter (
      {[dim user].[userhierarchy].[userlevel2].allmembers } 
      ,[dim user].[userhierarchy].currentmember.children.count > 1 
     ), 
     filter (
      {[dim user].[userhierarchy].[userlevel3].allmembers } 
      ,[dim user].[userhierarchy].currentmember.children.count > 1 
     ), 
     filter (
      {[dim user].[userhierarchy].[userlevel4].allmembers } 
      ,[dim user].[userhierarchy].currentmember.children.count > 1 
     ), 
     filter (
      {[dim user].[userhierarchy].[userlevel5].allmembers } 
      ,[dim user].[userhierarchy].currentmember.children.count > 1 
     ), 
     filter (
      {[dim user].[userhierarchy].[userlevel6].allmembers } 
      ,[dim user].[userhierarchy].currentmember.children.count > 1 
     ), 
     filter (
      {[dim user].[userhierarchy].[userlevel7].allmembers } 
      ,[dim user].[userhierarchy].currentmember.children.count > 1 
     ), 
     filter (
      {[dim user].[userhierarchy].[userlevel8].allmembers } 
      ,[dim user].[userhierarchy].currentmember.children.count > 1 
     ), 
     filter (
      {[dim user].[userhierarchy].[userlevel9].allmembers } 
      ,[dim user].[userhierarchy].currentmember.children.count > 1 
     ), 
     filter (
      {[dim user].[userhierarchy].[userlevel10].allmembers } 
      ,[dim user].[userhierarchy].currentmember.children.count > 1 
     ) 
    } ON 1 
FROM [Activities] 

查询将自动检查用户层次结构,并自动下降到必要的级别。感谢比尔建议他的解决方案,并把我放在正确的轨道上。

相关问题