2015-11-23 151 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