热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如果在SQLServer2008MDX中组装有序集合

SQLServer2008MDX应用之组装有序集合是本文我们主要要介绍的内容,接下来我们通过一些具体的例子来介绍这一过程,希望能够对您有所帮助。打开MDX查询编辑器,如下:例6-1SELECT{([Measures].[ResellerSalesAmount])}ONCOLUMNS,{[Product].[Produc
SQL Server 2008 MDX应用之组装有序集合是本文我们主要要介绍的内容,接下来我们通过一些具体的例子来介绍这一过程,希望能够对您有所帮助。
打开MDX查询编辑器,如下:
例6-1
SELECT  
{([Measures].[Reseller Sales Amount])} ON COLUMNS,  
{[Product].[Product].[Product].Members} ON ROWS  
FROM [Step-by-Step]; 
查询结果:

我们修改排序,如下:
例6-2
SELECT  
{([Measures].[Reseller Sales Amount])} ON COLUMNS,  
Order(  
{[Product].[Product].[Product].Members},  
([Measures].[Reseller Sales Amount]),  
DESC  
) ON ROWS  
FROM [Step-by-Step]; 

注意排序字段,这里使用了Order函数(http://msdn.microsoft.com/zh-cn/library/ms145587.aspx)。
例6-3
SELECT  
{  
([Measures].[Reseller Sales Amount]),  
([Measures].[Internet Sales Amount])  
} ON COLUMNS,  
Order(  
{[Product].[Product].[Product].Members},  
VBAMDX!ABS(  
([Measures].[Reseller Sales Amount]) -  
([Measures].[Internet Sales Amount])  
),  
DESC  
) ON ROWS  
FROM [Step-by-Step]; 
注意,我们使用了上一节提到的VBA函数,结果以两列之差的绝对值为排序依据。
SQL Server 2008 MDX应用之组装有序集合
注意:使用Order还可以突破分层限制。
例6-4
SELECT  
{([Measures].[Reseller Sales Amount])} ON COLUMNS,  
{[Product].[Subcategory].[Subcategory].Members} ON ROWS  
FROM [Step-by-Step]; 
SQL Server 2008 MDX应用之组装有序集合
例6-5
SELECT  
{([Measures].[Reseller Sales Amount])} ON COLUMNS,  
{[Product].[Category].[Category].Members} *  
{[Product].[Subcategory].[Subcategory].Members} ON ROWS  
FROM [Step-by-Step]; 
SQL Server 2008 MDX应用之组装有序集合
再进一步,看一个双排序的例子
例6-6
SELECT  
{([Measures].[Reseller Sales Amount])} ON COLUMNS,  
Order(  
{[Product].[Category].[Category].Members} *  
{[Product].[Subcategory].[Subcategory].Members},  
([Measures].[Reseller Sales Amount]),  
DESC  
) ON ROWS  
FROM [Step-by-Step]; 
SQL Server 2008 MDX应用之组装有序集合
在上面的查询中,交叉联接使用默认排序,而且后面指定了([Measures].[Reseller Sales Amount])排序,但是大家注意到没有,这一列并没有按照指定的数值排序,为什么呢?因为默认的ASC和DESC是分层的(hierarchical),换句话说,这些元组的前一个成员的排序被保留了。为了打乱这个层次结构,可以使用BASC和BDESC(http://msdn.microsoft.com/zh-cn/library/ms145587(v=SQL.105))。
例6-7
SELECT  
{([Measures].[Reseller Sales Amount])} ON COLUMNS,  
Order(  
{[Product].[Category].[Category].Members} *  
{[Product].[Subcategory].[Subcategory].Members},  
([Measures].[Reseller Sales Amount]),  
BDESC  
) ON ROWS  
FROM [Step-by-Step]; 
SQL Server 2008 MDX应用之组装有序集合
OK!这下消停了。
顺便,我们提一下Hierarchize函数(http://msdn.microsoft.com/zh-cn/library/ms145981.aspx),该函数可以按层次结构的顺序组织指定集中的成员,返回集的有效多维表达式 (MDX)。
我们看一个例子
例6-8
SELECT  
{([Measures].[Reseller Sales Amount])} ON COLUMNS,  
Hierarchize(  
{  
([Product].[Product Categories].[Subcategory].[Road Bikes]),  
([Product].[Product Categories].[All Products]),  
([Product].[Product Categories].[Subcategory].[Mountain Bikes]),  
([Product].[Product Categories].[Category].[Bikes]),  
([Product].[Product Categories].[Subcategory].[Touring Bikes])  
}  
) ON ROWS  
FROM [Step-by-Step]; 
SQL Server 2008 MDX应用之组装有序集合
如果定义POST标志,则 Hierarchize 函数按非自然顺序对一定级别的成员进行排序。 也就是说,子成员优先于他们的父级。
例6-9
SELECT  
{([Measures].[Reseller Sales Amount])} ON COLUMNS,  
Hierarchize(  
{  
([Product].[Product Categories].[Subcategory].[Road Bikes]),  
([Product].[Product Categories].[All Products]),  
([Product].[Product Categories].[Subcategory].[Mountain Bikes]),  
([Product].[Product Categories].[Category].[Bikes]),  
([Product].[Product Categories].[Subcategory].[Touring Bikes])  
},  
POST  
) ON ROWS  
FROM [Step-by-Step]; 
SQL Server 2008 MDX应用之组装有序集合
范围操作符:包含一个默认的排序
例6-10
SELECT  
{([Measures].[Reseller Sales Amount])} ON COLUMNS,  
{[Date].[Calendar].[CY 2001]:[Date].[Calendar].[CY 2004]} ON ROWS  
FROM [Step-by-Step];  
/*  
Reseller Sales Amount  
CY 2001 $8,065,435.31  
CY 2002 $24,144,429.65  
CY 2003 $32,202,669.43  
CY 2004 $16,038,062.60  
*/ 
关于SQL Server 2008 MDX应用之组装有序集合的相关知识就介绍到这里了,希望本次的介绍能够对您有所收获!

推荐阅读
  • 本文介绍了一个基于 Java SpringMVC 和 SSM 框架的综合系统,涵盖了操作日志记录、文件管理、头像编辑、权限控制、以及多种技术集成如 Shiro、Redis 等,旨在提供一个高效且功能丰富的开发平台。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 在当前众多持久层框架中,MyBatis(前身为iBatis)凭借其轻量级、易用性和对SQL的直接支持,成为许多开发者的首选。本文将详细探讨MyBatis的核心概念、设计理念及其优势。 ... [详细]
  • MySQL缓存机制深度解析
    本文详细探讨了MySQL的缓存机制,包括主从复制、读写分离以及缓存同步策略等内容。通过理解这些概念和技术,读者可以更好地优化数据库性能。 ... [详细]
  • 精选30本C# ASP.NET SQL中文PDF电子书合集
    欢迎订阅我们的技术博客,获取更多关于C#、ASP.NET和SQL的最新资讯和资源。 ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • 本文由瀚高PG实验室撰写,详细介绍了如何在PostgreSQL中创建、管理和删除模式。文章涵盖了创建模式的基本命令、public模式的特性、权限设置以及通过角色对象简化操作的方法。 ... [详细]
  • 根据最新发布的《互联网人才趋势报告》,尽管大量IT从业者已转向Python开发,但随着人工智能和大数据领域的迅猛发展,仍存在巨大的人才缺口。本文将详细介绍如何使用Python编写一个简单的爬虫程序,并提供完整的代码示例。 ... [详细]
  • 本文详细探讨了JDBC(Java数据库连接)的内部机制,重点分析其作为服务提供者接口(SPI)框架的应用。通过类图和代码示例,展示了JDBC如何注册驱动程序、建立数据库连接以及执行SQL查询的过程。 ... [详细]
  • 本文深入分析了 USDC 的稳定性和可能的救援措施,探讨了在硅谷银行破产后 USDC 面临的风险以及行业内的反应。 ... [详细]
  • 在安装 SQL Server 时,选择混合验证模式可以提供更高的灵活性和管理便利性。如果您已经安装了 SQL Server 并使用单一的 Windows 身份验证模式,可以通过以下步骤将其更改为混合验证模式。 ... [详细]
  • 本文介绍了在 SQL Server 2012 客户端中格式化 SQL 查询语句的多种方法,包括内置功能和第三方工具,帮助用户提高代码可读性和维护性。 ... [详细]
  • Python自动化测试入门:Selenium环境搭建
    本文详细介绍如何在Python环境中安装和配置Selenium,包括开发工具PyCharm的安装、Python环境的设置以及Selenium包的安装方法。此外,还提供了编写和运行第一个自动化测试脚本的步骤。 ... [详细]
  • 本文介绍了如何在 JavaScript 中对两个结构不同的数组进行数据合并,提供详细的代码示例和解释。 ... [详细]
  • MySQL Debug 模式的实现与应用
    本文详细介绍了如何启用和使用 MySQL 的调试模式,包括编译选项、环境变量配置以及调试信息的解析。通过实际案例展示了如何利用调试模式解决客户端无法连接服务器的问题。 ... [详细]
author-avatar
椰子
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有