首页 > 开发 > 综合 > 正文

任意时间段量的统计

2024-07-21 02:07:35
字体:
来源:转载
供稿:网友

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

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


 


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表