2011-12-15 86 views
1

我这篇文章如下:MDX重复计数

http://msdn.microsoft.com/en-us/library/aa902637%28v=sql.80%29.aspx

和我对重复计数查询看起来是这样的:

Count(CrossJoin({[Measures].[Submission Count]}, [Submission].[PK Submission].Members), ExcludeEmpty) 

它总是返回1比它应该(例如它返回27而不是26)。

在同一篇文章中有这样的查询(这是假设来解决这个问题):

Count(CrossJoin({[Sales]}, 
Descendants([Customers].CurrentMember, [Customer Names])), 
ExcludeEmpty) 

但我无法得到它的工作。我已经试过这两个,但第二个总是返回1或0,而第一个不工作(错误:我有明确定义的水平):

Count(CrossJoin({[Measures].[Submission Count]}, 
    Descendants([Submission].CurrentMember, [Submission].[PK Submission])), 
    ExcludeEmpty) 


Count(CrossJoin({[Measures].[Submission Count]}, 
    Descendants([Submission].[PK Submission].CurrentMember, [Submission].[PK Submission])), 
    ExcludeEmpty) 

任何想法我做错了什么?

谢谢!

回答

3

第一查询返回的原因“1比它应该”是因为[Submission].[PK Submission].Members元组集还包括了所有成员。

如果您参考[PK Submission]级别而不是[PK Submission]层次结构的所有成员,它不包括全部成员。

因此,下面的回报你期待什么:

Count(CrossJoin({ [Measures].[Submission Count] } 
       , { [Submission].[PK Submission].[PK Submission] }) 
    , ExcludeEmpty)