【问题标题】:MDX query for average of sums by month and yearMDX 查询按月和年计算总和的平均值
【发布时间】:2011-10-12 14:27:05
【问题描述】:

我被 MDX 查询卡住了...我有一个看起来像这样的表:

Date         Client        Amount
---------------------------------
2010-01-01        1          1000
2010-01-01        2           500
2010-01-02        1          1100
       ...      ...           ...
2011-09-30        3          2000

基本上,我想要一个与以下 T-SQL 等效的 MDX:

SELECT [Year], [Month], AVG(DailyTotal)
FROM (
    SELECT [Year], [Month], [Day], SUM(Amount) as DailyTotal
    FROM Table
    GROUP BY [Year], [Month], [Day]
)
GROUP BY [Year], [Month]

我试图得到这样的结果

        Jan    ...   Sept
2010    AVG    ...    AVG
2011    AVG    ...    AVG

提前致谢

【问题讨论】:

    标签: sql-server mdx average


    【解决方案1】:

    我有一个使用 Adventure Works 的查询:

    with member [measures].[Average] as Avg({Descendants([Date].[Calendar].CurrentMember, [Date].[Calendar].[Date])*[Date].[Month of Year].CurrentMember}, [Measures].[Internet Sales Amount])
    select 
    {{[Date].[Month of Year].[Month of Year]}*{[Measures].[Internet Sales Amount], [measures].[Average]}} on columns,
    {[Date].[Calendar].[Calendar Year]} on rows
    From    [Adventure Works]    
    

    在此查询中,我使用了 2 个层次结构([日期]。[日历] 和 [日期]。[一年中的月份])。也许,在您的情况下,如果您的时间维度有其他层次结构,您可能需要做其他事情。

    【讨论】:

      【解决方案2】:
      select *
      from 
      (
          select [Year], [Month], avg(DailyTotal) as AVERAGE
          from (
                  select 
                      [Year]              = year([date]), 
                      [Month]             = month([date]), 
                      [day]                   = day([date]) ,
                      [DailyTotal]  = sum([Amount])
                  from [Table]
                  group by year(date), month(date), day(date)
          ) Q
          group by [Year], [Month]
      ) K
      pivot (max(AVERAGE) for K.[Month] in ([1],[2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12])) as S
      

      【讨论】:

      • 您需要做的就是突出显示任何代码并单击{} 按钮,您的代码将被格式化。在这种情况下,我已经为您完成了。
      • 但是,为了记录,您已经发布了 SQL 代码。 OP 要求提供 MDX。
      • 感谢您的回答,但 Jamiec 是对的,我需要 MDX 查询
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-13
      相关资源
      最近更新 更多