关于查询动态时间的MDX语句

本文介绍了如何在MDX中处理动态时间查询,特别是在没有可用的动态时间函数的情况下。通过使用WITH语句定义计算成员,结合StrToMember函数和日期处理,实现了如统计昨日、最近三个月销售额等动态查询。示例代码展示了如何将当前日期减一得到昨日的日期,并将其转化为成员表达式进行查询。
摘要由CSDN通过智能技术生成

一个关于查询动态时间的MDX语句
    目的分析:在特定的查询展示环境下,如要利用BSM发布KPI指标的信息,由于登陆门户时需要每天实时的数据信息,但是又不需要另外开发程序来辅助生成, 只能通过MDX语句来查询,通过查找mdx中的函数,没有找到可以动态去时间的相关函数。在MDX里也不能像t-sql那样使用DECLARE语句来声明 变量,需要使用WITH来定义一个计算成员。第一行便是声明了一个mydate的计算成员。注意在MDX里的变量和标量和在SQL里一样,是弱类型的。但 当你声明一个字符串的变量的话应该用双引号扩住,而不是单引号,而你要声明一个日期型的变量的话不用引号,比如声明一个表示2007年8月的日期型变量用 “WITH MEMBER mydate as 200708”就可以了。
    MDX里可以把一个字符串表达式转换成一个成员或者集的引用,StrToMember函数用来完成讲字符串转换成成员,然后这个字符串你可以用报表参数或 者内部计算成员等来拼接而成,从而达到动态查询的效果。MDX里并没有很多的日期和文本处理函数,但它却可以用大部分的VBS函数和EXCEL表达式,实 际上是调用的Micrisoft.VisualBasic命名空间下的相关类,以及其它的一些对象。比如在MDX里获取当前时间,就不能用 getdate(),而用now()或者date()。而dateadd函数的里的格式字符串,如yyyy,m,d等字符串要用单引号或双引号扩住,否则 这个函数执行不过去的。注意在t-sql里是不用加引号的,如SELECT DATEADD(mm, 2, getdate())。虽然MDX是弱类型的,但有时候也需要强制类型转换,因为mydate变量声明的时候是日期类型,但后面要用它拼接成一个成员的字

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值