Ssas MDX查询中的求和与分组

Ssas MDX查询中的求和与分组,ssas,mdx,Ssas,Mdx,我需要一个MDX查询来对一列中的数据求和,并按其类型聚合另一列中的数据。例如,我当前的查询是: SELECT { [Measures].[DeclCount], [Measures].[SubCount]} ON COLUMNS, { ( [Organization].[OrganizationKey].[OrganizationKey].ALLMEMBERS * [Organization].[Name].[Name].ALLMEMBERS * [Organizat

我需要一个MDX查询来对一列中的数据求和,并按其类型聚合另一列中的数据。例如,我当前的查询是:

    SELECT 
 { [Measures].[DeclCount], [Measures].[SubCount]} ON COLUMNS, 
 {  (
 [Organization].[OrganizationKey].[OrganizationKey].ALLMEMBERS * 
 [Organization].[Name].[Name].ALLMEMBERS * 
 [Organization].[Need Declaration10].[Need Declaration10].ALLMEMBERS *  
 [DeclType].[DeclarationNumber].[DeclarationNumber].ALLMEMBERS
 )
}  
  ON ROWS
FROM 
(
    SELECT
        DESCENDANTS([Organization].[OrganizationKey].CHILDREN) on COLUMNS
    FROM 
    (
        SELECT ([Organization].[Code].&[0105044397] ON COLUMNS
        FROM [MyCube]
    )
)
目前的结果是: 代码-名称-需要声明10-DeclType-DeclCount-SubCount 代码1-Organization1-0-1-NULL-NULL 代码1-组织1-1-2-1-2 代码1-组织1-1-3-2-2

预期结果是:

Code - Name - Sum(Need Declaration10) - SumDeclCount1 - SumSubCount1 - SumDeclCount2 - SumSubCount2 - SumDeclCount3 - SumSubCount3
Code1 - Organization1 - 2 - NULL - NULL - 1 - 2 - 2 -2 
如何使用MDX实现这一点?谢谢你的帮助

编辑: 谢谢你,弗兰克,这几乎是我所需要的一切。 最后两件事是: 1.我有10个不同的[DeclType].[DeclarationNumber]。是否可以修改([DeclType].[DeclarationNumber].All,Measures.[Sum of Needs Declaration10])来计算每一项的总和? 2.我需要用这个查询填充SSRS报告。是否可以从此查询中获取展开的数据集?理想的解决方案将设置为 (OrganizationKey、OrganizationName、DeclCount\u X、SubCount\u X、SumOfNeed\u X)
其中X=1..10

正如我在评论中所述,这比应该的困难,因为
[DeclarationNumber]
是一个属性/层次结构,而不是度量。假设
[DeclarationNumber]
只包含整数值,我希望下面的解决方法能够奏效。然而,它们必须从字符串转换为数字类型,以便能够像度量值一样使用它们

简单的部分是将
[DeclType].[DeclarationNumber]
移动到列中

WITH MEMBER Measures.[Declaration10 numeric] as
            CInt([Organization].[Need Declaration10].CurrentMember.Name)
     MEMBER Measures.[Sum of Need Declaration10] as
            Sum(EXISTING [Organization].[Need Declaration10].[Need Declaration10].Members,
                Measures.[Declaration10 numeric]
            )
SELECT { ( 
           [DeclType].[DeclarationNumber].All,
           Measures.[Sum of Need Declaration10]
       ) }
       +
       (
         [DeclType].[DeclarationNumber].[DeclarationNumber].Members
         *
         {[Measures].[DeclCount], [Measures].[SubCount]}
       )
       ON COLUMNS,

       [Organization].[OrganizationKey].[OrganizationKey].ALLMEMBERS
       * 
       [Organization].[Name].[Name].ALLMEMBERS
       ON ROWS
FROM 
(
    SELECT
        DESCENDANTS([Organization].[OrganizationKey].CHILDREN) on COLUMNS
    FROM 
    (
        SELECT ([Organization].[Code].&[0105044397] ON COLUMNS
        FROM [MyCube]
    )
)

由于我无法访问您的多维数据集,可能需要进行一些调整,无论是语法还是语句的某些逻辑。

正如我在评论中所述,这比应该的困难,因为
[DeclarationNumber]
是一个属性/层次结构,而不是一个度量。假设
[DeclarationNumber]
只包含整数值,我希望下面的解决方法能够奏效。然而,它们必须从字符串转换为数字类型,以便能够像度量值一样使用它们

简单的部分是将
[DeclType].[DeclarationNumber]
移动到列中

WITH MEMBER Measures.[Declaration10 numeric] as
            CInt([Organization].[Need Declaration10].CurrentMember.Name)
     MEMBER Measures.[Sum of Need Declaration10] as
            Sum(EXISTING [Organization].[Need Declaration10].[Need Declaration10].Members,
                Measures.[Declaration10 numeric]
            )
SELECT { ( 
           [DeclType].[DeclarationNumber].All,
           Measures.[Sum of Need Declaration10]
       ) }
       +
       (
         [DeclType].[DeclarationNumber].[DeclarationNumber].Members
         *
         {[Measures].[DeclCount], [Measures].[SubCount]}
       )
       ON COLUMNS,

       [Organization].[OrganizationKey].[OrganizationKey].ALLMEMBERS
       * 
       [Organization].[Name].[Name].ALLMEMBERS
       ON ROWS
FROM 
(
    SELECT
        DESCENDANTS([Organization].[OrganizationKey].CHILDREN) on COLUMNS
    FROM 
    (
        SELECT ([Organization].[Code].&[0105044397] ON COLUMNS
        FROM [MyCube]
    )
)

由于我无法访问您的多维数据集,因此可能需要对语句的语法或某些逻辑进行一些调整。

您要求和的内容应该是度量值。我认为你应该先学习三维建模。然后,如果数据模型是正确的,MDX可能会非常简单。不幸的是,我无法更改模型。您想要求和的东西应该是度量。我认为你应该先学习三维建模。然后,如果数据模型是正确的,MDX可能会非常简单。不幸的是,我无法更改模型。谢谢,这几乎是我所需要的一切。最后两件事是:1。我有10个不同的[DeclType].[DeclarationNumber]。是否可以修改([DeclType].[DeclarationNumber].All,Measures.[Sum of Needs Declaration10])来计算每一项的总和?2.我需要用这个查询填充SSRS报告。是否可以从此查询中获取展开的数据集?理想的解算将设置为(OrganizationKey、OrganizationName、DeclCount_X、SubCount_X、SumOfNeed_X),其中X=1..10。要展平结果,需要为声明编号和原始度量值的每个组合定义一个新的度量值成员。使用元组语法,e。g<代码>([DeclType].[DeclarationNumber].[typename1],[Measures].[DeclCount])。然后你会在你的专栏列表中列出所有这些措施。谢谢你,弗兰克,这正是我需要的。谢谢,这几乎是我需要的一切。最后两件事是:1。我有10个不同的[DeclType].[DeclarationNumber]。是否可以修改([DeclType].[DeclarationNumber].All,Measures.[Sum of Needs Declaration10])来计算每一项的总和?2.我需要用这个查询填充SSRS报告。是否可以从此查询中获取展开的数据集?理想的解算将设置为(OrganizationKey、OrganizationName、DeclCount_X、SubCount_X、SumOfNeed_X),其中X=1..10。要展平结果,需要为声明编号和原始度量值的每个组合定义一个新的度量值成员。使用元组语法,e。g<代码>([DeclType].[DeclarationNumber].[typename1],[Measures].[DeclCount])。然后你会在你的专栏列表中列出所有这些措施。谢谢你,弗兰克,这正是我需要的