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