收藏本站 
网站首页 
网站地图 
>> 我们从网络和杂志上收集了近100000余篇各类电脑技术、网络技术、软件技术等方面的文章教程,我们的收录原则:不是精华拒不收录!
先飞电脑技术网技术文章
任意时间段量的统计
[ 作者:chump    转贴自:网载    阅读次数:46    更新时间:2006-1-12 23:09:00   录入:蓝色动力 ]        

如果查询时间段是维中的成员,那么这段时间的量的汇总可以直接得出!(缺省状态下,维中成员是按级别
汇总的),如查询1997年或1997年3月的汇总,可以使用以下语句:
select
    {[Time2].[1997]} on columns,
   {[Customers].[Country].members} on rows
from Sales
where ([Measures].[Store Sales])
或[Time].[1997].[Q1].[3]
但很多情况下,客户希望得到任意时间段的汇总!通常,我们可以这样实现:
如:1997.1.8--1997.5.13
with member [Time2].[1997.1.8--1997.5.13] as 'sum([Time2].[1997].[Q1].[1].[8]:[Time2].[1997].[Q2].[5].[13])'
select
    {[Time2].[1997.1.8--1997.5.13]} on columns,
   {[Customers].[Country].members} on rows
from Sales
where ([Measures].[Store Sales])

注意事项:
1)时间段的起始和结束日期必须是同一级别;
2)未知系统是否会优化查询,所以尽可能使用聚集:如1997.1.8--1997.5.13可以分解为:
sum([Time2].[1997].[Q1].[1].[8]:[Time2].[1997].[Q1].[1].[31])+
sum([Time2].[1997].[Q1].[2]:[Time2].[1997].[Q1].[3])+
[Time2].[1997].[Q2].[4]+
sum([Time2].[1997].[Q2].[5].[1]:[Time2].[1997].[Q2].[5].[13])
分段尽可能优化,并且可以使用减法!!
如:
sum([Time2].[1997].[Q1]:[Time2].[1997].[Q2])-
sum([Time2].[1997].[Q1].[1].[1]:[Time2].[1997].[Q1].[1].[7])-
sum([Time2].[1997].[Q2].[5].[14]:[Time2].[1997].[Q2].[6].[30])

以上个人意见,仅供参考!


 

上一篇:db2数据库的备份和恢复  下一篇: SQL SERVER实用经验技巧集     选择自 longrujun 的 B  

网站主页 | 收藏本页 | 联系我们 | 广告服务 | 站点地图 | 会员注册 | 招聘信息 | 内容指正

联系QQ:先飞电脑技术网站事务联系QQ,点击可以直接留言. 32933427 电话:13710542091 [世界排名] 鄂ICP备05005890号