请教一个MDX的写法(急)

yls087412 2008-11-11 11:21:58
以一个超市的洗衣粉销售为例,有如下的实事表:

品名(productName) 单价(unitPrice) 数量(qty) 日期(年月)
......
......
立白 4.0 30 200807
立白 4.2 50 200808
立白 4.2 50 200808
汰渍 5.0 40 200807
汰渍 5.0 40 200808
汰渍 5.2 40 200809
......
......

现在我想计算洗衣粉在8,9,10,11月份的年销售额,这里的年销售额大家可能会误解,2008年8月的
年销售额指的是从2007年9月到2008年8月这一年里的所有品牌所所有洗衣粉的销售总额,依次类推。
请问我怎么用MDX写出这样的查询。

我的难点有两个:
1、我没有办法汇总单个月份的年销售总额

2、有没有办法同时得出几个月的年销售总额
...全文
92 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yls087412 2008-11-24
  • 打赏
  • 举报
回复
结帐,再次谢谢Mr_JBean
JBean 2008-11-11
  • 打赏
  • 举报
回复
多个月份可以这样:
with
member [Measures].[一年以来合计] AS 'sum(LastPeriods(12,[Time].CurrentMember),[Measures].[Unit Sales]*[Measures].[Sales Count])',FORMAT_STRING = '#.00'

select
{[Measures].[一年以来合计]} on columns,
{[Time].[1998].[Q3].[8],[Time].[1998].[Q3].[9],[Time].[1998].[Q4].[10]} on rows
from sales

或者:

with set [关注月份] AS 'LastPeriods(3,[Time].[1998].[Q4].[10])'
member [Measures].[一年以来合计] AS 'sum(LastPeriods(12,[Time].CurrentMember),[Measures].[Unit Sales]*[Measures].[Sales Count])',FORMAT_STRING = '#.00'

select
{[Measures].[一年以来合计]} on columns,
{[关注月份]} on rows
from sales
JBean 2008-11-11
  • 打赏
  • 举报
回复
首先: 8月份一年以来计算如下

with member [Time].[一年以来合计] AS 'Aggregate(LastPeriods(12,[Time].[1998].[Q3].[8]))'
select
{[Measures].[Unit Sales]} on columns,
{[Time].[一年以来合计]} on rows
from sales
JBean 2008-11-11
  • 打赏
  • 举报
回复
Aggregate + lastperiods函数
JBean 2008-11-11
  • 打赏
  • 举报
回复
JBean 2008-11-11
  • 打赏
  • 举报
回复
需要注意的是,建立Cube时,销售额应该在事实表的级别用单价和数量在第一轮首先计算出来结论才正确.

否则,采用"月份总额=月份单价聚合*月份数量聚合"是不正确的.
参考:http://blog.csdn.net/Mr_JBean/archive/2008/11/04/3220255.aspx
yls087412 2008-11-11
  • 打赏
  • 举报
回复
好!!
谢谢Mr_JBean!
下午试试你的方法,估计我的维度没有建好,有重建。

7,388

社区成员

发帖
与我相关
我的任务
社区描述
其他数据库开发 数据仓库
社区管理员
  • 数据仓库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧