1

我需要一个 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]
    )
)

当前结果为: Code - Name - Need Declaration10 - DeclType - DeclCount - SubCount Code1 - Organization1 - 0 - 1 - NULL - NULL Code1 - Organization1 - 1 - 2 - 1 - 2 Code1 - Organization1 - 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 Need Declaration10]) 来计算它们每个的总和?2. 我需要用这个查询填充 SSRS 报告。是否可以从此查询中获取展平数据集?理想的灵魂将设置为 (OrganizationKey, OrganizationName, DeclCount_X, SubCount_X, SumOfNeed_X) 其中 X=1..10

4

1 回答 1

1

正如我在评论中已经说过的那样,这比[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]
    )
)

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

于 2013-09-03T17:21:56.167 回答