2017-03-17 71 views
0

我有一個MDX查詢這讓我的日期範圍或條件有多少人完成/預訂/未登記的維護作業有每輛車MDX過濾通過的措施

SELECT NON EMPTY { [Measures].[Completed], 
[Measures].[Unbooked], 
[Measures].[Booked]} ON COLUMNS, 

NON EMPTY { (
[Job Code].[Code].[Code].ALLMEMBERS* 
[Vehicle].[Vehicle Number].[Vehicle Number].ALLMEMBERS* 
[Job Group Target Completion Date].[Date].[Date].ALLMEMBERS 
) } ON ROWS 

FROM (SELECT (STRTOMEMBER(@FromDate, CONSTRAINED) : STRTOMEMBER(@ToDate, CONSTRAINED)) 
FROM [Standard Reports - Depot Work Analysis]) 

凡@FromDate和@ToDate來自會員我的[工作組目標完成日期]維度。作業在共享作業代碼和目標日期時分組爲「作業組」。

如何擴展此功能,以便我可以在目標日期(因爲它是現在)或所有作業組中未完成所有作業(即[度量]。[未預訂]> 0或[措施] [預訂]> 0),但有針對性地在給定的日期範圍之前完成。

+0

你怎麼知道「有針對性的給定的日期範圍之前完成」?看來你必須使用兩套的結合。 –

+0

我需要給定日期或[工作組目標完成日期]。[日期]在結束日期和[措施]之前[工作組目標完成日期]。[未預訂]> 0或[措施]。[預訂] > 0 –

回答

0

我希望你要像下面這樣:

With 
Member [Measures].[Targeted] as 
IIF(
    [Measures].[Unbooked] > 0 
    and 
    [Measures].[Booked] > 0 
    and 
    [Measures].[Completed] > 0, 
    1, 
    Null 
) 


Select 
Non Empty { 
    [Measures].[Completed], 
    [Measures].[Unbooked], 
    [Measures].[Booked] 
} on 0, 
Non Empty { 
    { 
     [Job Code].[Code].[Code].AllMembers * 
     [Vehicle].[Vehicle Number].[Vehicle Number].AllMembers * 
     {StrToMember(@FromDate, CONSTRAINED):StrToMember(@ToDate, CONSTRAINED)} 
    { 
    + 
    NonEmpty(
     { 
      [Job Code].[Code].[Code].AllMembers * 
      [Vehicle].[Vehicle Number].[Vehicle Number].AllMembers * 
      {NULL:StrToMember(@FromDate, CONSTRAINED).Lag(1)} 
     }, 
     [Measures].[Targeted] 
    ) 
} on 1 

From [Standard Reports - Depot Work Analysis]) 
+0

這絕對是一個改進,問題是如果工作由工會的第二部分返回,我也需要帶回具有相同工作代碼和目標日期的任何結果,即使它們全部完成。 –

+0

我已添加[Measures]。[Completed]> 0?這是你的意思嗎?如果我誤解了你,請分享這個問題。 –