上次我们介绍了:SQL Server 2008 MDX应用之组装有序集合,本文我们主要介绍一下SQL Server 2008 MDX应用之检索集合的最后一个或第一个元组的操作,接下来就让我们一起来了解一下这部分内容。
我们用到两个函数TopCount(http://msdn.microsoft.com/zh-cn/library/ms144792.aspx)和BottomCount(http://msdn.microsoft.com/zh-cn/library/ms144864.aspx)
注意:这两个函数总是会打乱层次结构。
例6-11
SELECT {([Measures].[Reseller Sales Amount])} ON COLUMNS, TopCount( {[Product].[Subcategory].[Subcategory].Members}, 5, ([Measures].[Reseller Sales Amount]) ) ON ROWS FROM [Step-by-Step]; /* Reseller Sales Amount Road Bikes $29,358,206.96 Mountain Bikes $26,492,684.38 Touring Bikes $10,451,490.22 Mountain Frames $4,713,672.15 Road Frames $3,849,853.34 */
注意,未指定顺序时,默认按升序排列。
Head函数(http://msdn.microsoft.com/zh-cn/library/ms144859(v=SQL.105)),返回集中位置靠前的指定数目的元素,同时保留重复项。Head 函数从指定集的开始处返回指定的元组数目。并保留元素的顺序。Count 的默认值为 1。假如指定的元组数目小于 1,则 Head 函数返回空集。假如指定的元组数目超过了集中的元组数目,则此函数返回原始集。
Tail函数(http://msdn.microsoft.com/zh-cn/library/ms146056.aspx),Tail 函数从指定集的结尾处返回指定的元组数目。 会保留元素的顺序。 Count 的默认值为 1。假如指定的元组数目小于 1,则该函数返回空集。 假如指定的元组数目超过了集中的元组数目,则此函数返回原始集。
例6-12
SELECT {([Measures].[Reseller Sales Amount])} ON COLUMNS, Tail( Order( {[Product].[Subcategory].[Subcategory].Members}, ([Measures].[Reseller Sales Amount]), BDESC ), 5 ) ON ROWS FROM [Step-by-Step]; /* Reseller Sales Amount Tires and Tubes $925.21 Bike Stands (null) Fenders (null) Lights (null) Panniers (null) */
Item函数(http://msdn.microsoft.com/zh-cn/library/ms145501.aspx),下面,我们看一个比较复杂的例子
例6-13
WITH MEMBER [Measures].[Top Product Sales] AS { EXISTING TopCount( [Product].[Product].[Product].Members, 1, ([Measures].[Internet Sales Amount]) ) * {[Measures].[Internet Sales Amount]} }.Item(0) ,FORMAT_STRING="Currency" MEMBER [Measures].[Top Product Name] AS { EXISTING TopCount( [Product].[Product].[Product].Members, 1, ([Measures].[Internet Sales Amount]) ) }.Item(0).Item(0).Name SELECT { ([Measures].[Internet Sales Amount]), ([Measures].[Top Product Sales]), ([Measures].[Top Product Name]) } ON COLUMNS, { ([Date].[Calendar Year].[CY 2001]), ([Date].[Calendar Year].[CY 2002]), ([Date].[Calendar Year].[CY 2003]), ([Date].[Calendar Year].[CY 2004]) } ON ROWS FROM [Step-by-Step];
上例中综合运用了本节和上节的几个常用函数,大家可以自行分析。
关于SQL Server 2008 MDX应用之检索集合中的元组的相关知识就介绍到这里了,希望本次的介绍能够对您有所收获!