去年当月的MTD

时间:2016-12-09 13:52:31

标签: ssas mdx cube

如何计算去年当月的MTD?查询下方返回12.2015的总[净销售额],但需要从2015年12月1日到2015年12月9日(今天)有销售。

   SUM(
        MTD(
            ParallelPeriod(
                [Calender].[YMD].[Month],
                12,
                [Calender].[YMD].CurrentMember
            )
        )
        ,[Measures].[Net Sales Amount]
    )

1 个答案:

答案 0 :(得分:1)

我认为你需要使用你发现的成员HEAD

SUM(
    HEAD(
        ParallelPeriod(
            [Calender].[YMD].[Month],
            12,
            [Calender].[YMD].CurrentMember
        ).CHILDREN,
    , 9
    )
    ,[Measures].[Net Sales Amount]
)

以上假设在你的立方体的设计中,日期是月的孩子。

你需要让9动态 - 你的立方体中有未来的日期吗?

如果您没有将来的日期,那么这可能会有效:

WITH 
  MEMBER [Measures].[NumDaysInCurrentMonth] AS
       Count(
          Descendants(
             TAIL([Date].[Calendar].[Month]).Item(0) //<<<not sure if Item(0) is required
            ,[Date].[Calendar].[Date]
            ,SELF
          )
        )

如果您确实有将来的日期,那么可能会出现以下情况:

WITH 
  MEMBER [Measures].[NumDaysInCurrentMonth] AS
       count(
          NONEMPTY(
            Descendants(
               TAIL([Date].[Calendar].[Month]).Item(0) //<<<not sure if Item(0) is required
              ,[Date].[Calendar].[Date]
              ,SELF
            )
          )
        )

然后上面的一个可以进入上一个:

WITH 
  MEMBER [Measures].[NumDaysInCurrentMonth] AS
     COUNT(
        Descendants(
           TAIL([Date].[Calendar].[Month]).Item(0) //<<<not sure if Item(0) is required
          ,[Date].[Calendar].[Date]
          ,SELF
        )
      )
  MEMBER [Measures].[PrevYearMTD] AS
     SUM(
        HEAD(
            ParallelPeriod(
                [Calender].[YMD].[Month],
                12,
                [Calender].[YMD].CurrentMember
            ).CHILDREN,
        , [Measures].[NumDaysInCurrentMonth]
        )
        ,[Measures].[Net Sales Amount]
      )