MDX按日期范围或度量条件过滤

时间:2017-03-17 11:16:37

标签: reporting-services 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)但目标是在给定的日期范围之前完成。

1 个答案:

答案 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])