WITH MEMBER [Measures].[Average Internet Sales Amount]AS AVG(DESCENDANTS([Date].[Calendar].CurrentMember, [Date].[Calendar].[Date],SELF), [Measures].[Internet Sales Amount]) SELECT {[Measures].[Internet Sales Amount],[Measures].[Average Internet Sales Amount]} ON0, NON EMPTY [Product].[Product Categories].[Product Name].Members ON1 FROM[Adventure Works] WHERE {[Date].[Calendar].[Calendar Year].&[2002], [Date].[Calendar].[Calendar Year].&[2003]}
上面的MDX语句的输出结果中会出现很多#error,其原因在于:在[Measures].[Average Internet Sales Amount]的当前上下文中,由于[Date].[Calendar]仅包含两个成员(即2002年和2003年),所以MDX解析器无法确定哪一个成员是CurrentMember。要想解决这个问题,其中的一个办法是使用Existing,详见下文:
WITH MEMBER [Measures].[Average Internet Sales Amount]AS AVG(EXISTING [Date].[Calendar].[Date], [Measures].[Internet Sales Amount]) SELECT {[Measures].[Internet Sales Amount],[Measures].[Average Internet Sales Amount]} ON0, NON EMPTY [Product].[Product Categories].[Product Name].Members ON1 FROM[Adventure Works] WHERE {[Date].[Calendar].[Calendar Year].&[2002], [Date].[Calendar].[Calendar Year].&[2003]}