2015-11-23 113 views
1

我想計算特定時間範圍的工作日,然後查找平均每日調度。目前時間範圍在WHERE語句。 我相信我已將日期範圍包含在第一個成員中,但我無法計算如何計算一個月範圍內的日期。 任何建議?計算工作日MDX

WITH MEMBER [Measures].[Working Days] AS 
COUNT(Date.[Working Date].&[1])--Doesn't work 
MEMBER [Measures].[Average Daily Dispatches] AS 
[Measures].[Total Dispatches]/[Measures].[Working Days] 
SELECT [Measures].[Average Daily Dispatches] ON 0 
FROM [cube] 
WHERE (
[Date].[Month].&[2015-01-01T00:00:00]:[Date].[Month].&[2015-08-01T00:00:00] 
); 
+0

我們的答案是否有助於您找到解決問題的方法? – whytheq

回答

0

使用NonEmpty功能產生那些在其上有一個調度工作的日期。然後在此上使用COUNT

WITH MEMBER [Measures].[Working Days] AS 
COUNT 
    (
    NonEmpty 
      (
      [Date].[Working Date].MEMBERS, 
      [Measures].[Total Dispatches] 
      ) 
    ) 
0

某種替代性的,似乎使用Exists/Existing存在(我想,我是週一在AdvWrks立方體!)

WITH 
    MEMBER [Measures].[MondayCnt] AS 
    Count 
    (
     Exists 
     (
     (EXISTING 
      [Date].[Calendar].MEMBERS) 
     ,[Date].[Day of Week].[1] 
    ) 
    ) 
    MEMBER [Measures].[Averge] AS 
    [Measures].[Internet Sales Amount]/[Measures].[MondayCnt] 
SELECT 
    { 
    [Measures].[Internet Sales Amount] 
    ,[Measures].[MondayCnt] 
    ,[Measures].[Averge] 
    } ON 0 
, 
    [Date].[Calendar].[Month].&[2006]&[6] 
    : 
    [Date].[Calendar].[Month].&[2007]&[6] ON 1 
FROM [Adventure Works]; 

以上結果如下:

enter image description here

+0

謝謝你的想法!MSDN論壇給了我上面的答案,它是正確的! – Proffesore

+0

@Poffesore我昨天寫了上面的內容。它是否也在'msdn'上? – whytheq

+1

@Poffesore這是一個簡單的禮儀,在這個網站上,如果有人幫助你,你給他們一個投票或如果它回答它,你將它標記爲答案。另一方面,如果它不能幫助你,讓這個人知道你遇到的問題。這樣,回答問題的人就會受益並改進答案。乾杯。 – SouravA