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

|