我需要一个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 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]。所有,措施。[需要声明的总和10])计算每个的总和? 2.我需要使用此查询填充SSRS报告。是否可以从此查询中获取展平数据集?理想的灵魂将被设置为 (OrganizationKey,OrganizationName,DeclCount_X,SubCount_X,SumOfNeed_X) 其中X = 1..10
答案 0 :(得分:1)
正如我在评论中已经说过的那样,这比应该更加困难,因为[DeclarationNumber]
是一个属性/层次结构,而不是一个度量。我希望下面的解决方法能够正常工作,假设[DeclarationNumber]
只包含整数值。然而,它们必须从String转换为数字类型才能使用它们类似于度量。
简单的部分是移动[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]
)
)
由于我无法访问您的多维数据集,因此可能需要进行一些调整,无论是语法还是语句的某些逻辑。