MDX-запрос для средней суммы по месяцам и годам - PullRequest
0 голосов
/ 12 октября 2011

Я застрял в запросе MDX ... У меня есть таблица, которая выглядит следующим образом:

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

По сути, я хотел бы иметь MDX-эквивалент следующего T-SQL:

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

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 18 октября 2011

У меня есть запрос с использованием 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 иерархии ([Дата]. [Календарь] и [Дата]. [Месяц года]).Может быть, в вашем случае вам может понадобиться сделать что-то еще, если у вашего измерения времени есть другие иерархии.

0 голосов
/ 13 октября 2011
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
...