2017-03-14 97 views
0

我仍在學習MDX,我想進行一個相當複雜的(?)查詢。我發現的DateOpen hour time每個組合那裏一直使用任何銷售:計算每個營業時間間隔的平均銷售額MDX

SELECT NON EMPTY 
    { 
     [Measures].[Quantity] 
    } ON COLUMNS, 
NON EMPTY 
    { 
     (
      [Dim Date].[Calender].[Date].ALLMEMBERS 
      ,[Dim Time].[Open Hour Bucket].[Open Hour Bucket].ALLMEMBERS 
     ) 
    } ON ROWS 
FROM 
    (SELECT 
     ( 
      { 
       (
        [Dim Store2].[Store Name].&[ActualStoreName] 
        ,[Dim Date].[Calender].[2014] 
       ) 
      } 
     ) ON COLUMNS 
    FROM [iceCube] 
    ) 

我的結果集,然後變成這樣:

       Quantity 
2014-11-07  11:00 - 11:59  1 
2014-11-07  12:00 - 12:59  10 
2014-11-08  11:00 - 11:59  3 
2014-11-08  12:00 - 12:59  2 
2014-11-10  13:00 - 13:59  1 

這就是我想在這個階段。然而,從以上結果中獲得這樣的小時之間的平均值:

    Average 
11:00 - 11:59  2 
12:00 - 12:59  6 
13:00 - 13:59  1 

是一個連接我不明白我會怎麼做。

我想找到2014年的平均銷售額,因爲我想在SSRS中使用特定一週的銷售額作爲專欄圖表創建一個圖表,同時將2014年的平均銷售額作爲單獨的行。這也使事情變得複雜,因爲我需要第一個查詢(儘管按星期計算,而不是2014年),2014年的平均數據在同一數據集中,我不知道該怎麼做。

我想到查詢發現平均銷售每器2014必須在SSAS作爲計算指標來進行,然後在SSRS我可以嘗試找到本週的銷量和2014年相同的數據不知何故設定的平均。

有沒有人有這個想法?

問候,

編輯

運行GregGalloway的答案我有這樣的輸出:

     Quantity YearlyHourAvg 
2014-01-01 09:00-09:59 (null)  #Error 
2014-01-01 10:00-10:59 (null)  #Error 
.   .   .   .   
.   .   .   . 
.   .   .   . 
2014-12-31 21:00-21:59 (null)  #Error 

(其中點表示再這樣下去,超過該行) ,也就是查詢從1月的第一個到最後一個每個Open Hour Bucket值。

當我試圖運行查詢時,它實際上只使用了With MEMBER AS...和原始查詢。 Select子句中添加[Measures].[YearlyHourAvg]引起了這些問題。

我目前正在測試此查詢SSRSSSMS

EDIT2

也許我是不是在原來的職位明確的,但我需要的平均是在per *time interval*基礎上,而不是由per time *and* date基礎。即我需要的時間跨度09:00-09:5910:00-10:59..的平均銷售時間。

回答

1

請嘗試以下操作。它應該添加一個新的列,這是整個2014年的那個小時的平均值。平均值應該是每小時的平均銷售量。如果您想在2014年的天數中獲得簡單的平均值,請回信,我們可以討論。如果您對我所做的更改有疑問,請詢問。

WITH 
MEMBER [Measures].[YearlyHourAvg] as 
Avg(
    Descendants(
    [Dim Date].[Calender].[2014], 
    [Dim Date].[Calender].[Date] 
), 
    [Measures].[Quantity] 
) 
SELECT 
    { 
     [Measures].[Quantity], 
     [Measures].[YearlyHourAvg] 
    } ON COLUMNS, 
NonEmpty(
    { 
     (
      [Dim Date].[Calender].[Date].ALLMEMBERS 
      ,[Dim Time].[Open Hour Bucket].[Open Hour Bucket].ALLMEMBERS 
     ) 
    } , 
    [Measures].[Quantity] 
) 
ON ROWS 
FROM 
    (SELECT 
     ( 
      { 
       (
        [Dim Store2].[Store Name].&[ActualStoreName] 
        ,[Dim Date].[Calender].[2014] 
       ) 
      } 
     ) ON COLUMNS 
    FROM [iceCube] 
    ) 
+0

感謝您回答這樣一個徹底的答案。儘管我遇到了一個問題。運行這個程序讓我得到了我編輯OP的輸出。你知道可能是什麼原因嗎? – Cenderze

+0

這按預期工作。我以某種方式第一次沒有實現它,但回到這個答覆我可以弄明白。 – Cenderze

相關問題