MDX查询“与成员”和总和问题

时间:2011-05-26 07:54:37

标签: ssas mdx

我有一个像

这样的查询
   WITH MEMBER [measures].[Count] AS 
   SUM(([Location].[Hierarchy].[Zone].[1].Children),[Measures].[Length])
   SELECT {[measures].[Count]} ON 0,
   {[Location].[Hierarchy].[Zone].&[1].Children} on 1
   FROM [NTAP]

我是MDX的真正初学者但是根据我的理解,这应该让我列出所有Zone 1:s的孩子以及所有这些孩子的总和。问题是我得到一个包含子项的列表和所有第1区:s长度的总和?

我明白了:

1 103026769420
2 103026769420
3 103026769420
4 103026769420

但我想得到的是这样的

1 84984958
2 9494949
3 934883
4 9458948588

位置是一个层次结构,如:

Zone Children

1
   1
   2
   3
2
   1
   2
   3

编辑:应该说我使用与成员的原因是measure.length在最终版本中将使用 Iif 。但我甚至无法做到这一点:(

edit2:修正拼写

2 个答案:

答案 0 :(得分:1)

您将获得第1区的每个孩子的1区所有孩子的总和。

您可以将其重写为:

WITH MEMBER [Measures].[Count] AS 
   SUM([Location].[Hierarchy].CurrentMember.Children, [Measures].[Length])
SELECT {[Measures].[Count]} ON 0,
   {[Location].[Hierarchy].[Zone].&[1].Children} on 1
FROM [NTAP]

顺便说一句,[1]<> &安培; [1]。没有&您正在指定名称并使用 - 键。如果在你的情况下key = name你没有什么可担心的。

答案 1 :(得分:0)

使用L>计算儿童的查询0将是:

WITH
MEMBER [Measures].[Count of Children with L more than 0] AS
    FILTER([Location].[Hierarchy].CurrentMember.Children,
           [Measures].[Length] > 0).COUNT
SELECT
{
    [Measures].[Count of Children with L more than 0]
} ON 0,
{
    [Location].[Hierarchy].[Zone].&[1]
} ON 1
FROM [Your Cube]

如果您在行上选择子项,那么这当然是行不通的,因为它们是离开的并且自己没有孩子,所以你会得到NULL。