上次我们介绍了: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应用之检索集合中的元组的相关知识就介绍到这里了,希望本次的介绍能够对您有所收获!
【编辑推荐】