任意时间段量的统计

发表于:2007-05-25来源:作者:点击数: 标签:
如果查询时间段是维中的成员,那么这段时间的量的汇总可以直接得出!(缺省状态下,维中成员是按级别 汇总的),如查询1997年或1997年3月的汇总,可以使用以下语句: select {[Time2].[1997]} on columns, {[Customers].[Country].members} on rows from Sal

如果查询时间段是维中的成员,那么这段时间的量的汇总可以直接得出!(缺省状态下,维中成员是按级别
汇总的),如查询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])

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


 


原文转自:http://www.ltesting.net