Mdx 动态选择日期

Mdx 动态选择日期,mdx,Mdx,目标是若当前月份为1,则通过上一年,否则通过当前年度。我总是想要上个月的数据。我有动态月逻辑工作,只是一年给我带来了问题。我试图用IIF声明来说明这一点,但始终返回当年 SELECT ( { IIF( Month(Now()) = '1', Strtomember(" [Posting Date].[Year].&[" + cstr(year(dateadd('yyyy',-1,now()))) + "] "),

目标是若当前月份为1,则通过上一年,否则通过当前年度。我总是想要上个月的数据。我有动态月逻辑工作,只是一年给我带来了问题。我试图用IIF声明来说明这一点,但始终返回当年

SELECT ( { IIF( Month(Now()) = '1', Strtomember(" [Posting Date].[Year].&[" + cstr(year(dateadd('yyyy',-1,now()))) + "] "),
                                                                 Strtomember(" [Posting Date].[Year].&[" + cstr(year(now())) + "] ")) 
                                                                 } ) ON COLUMNS
我已经验证了当我移除IIf时,每个
stroMember
部件都能独立正常工作。我可以查询当前年份,然后交换Strtomember并返回当前年份-1


注意:出于测试目的,我有
IIF(Month(Now())=“6”
,因为在发布时它是当前月份。我应该返回当前年份-1,但我返回当前年份。

尝试将“1”改为数字1:

而不是
Month(Now())=“1”

使用
Month(Now())=1

上述更改在我的多维数据集上运行良好:

SELECT 
  {
    IIF
    (
      Month(Now()) = 6
     ,StrToMember
      ("[Date].[Date - Calendar Month].[Calendar Year].&["
          + 
            Cstr(Year(Dateadd('yyyy',-1,Now())))
        + "]"
      )
     ,StrToMember
      (
          "[Date].[Date - Calendar Month].[Calendar Year].&[" + Cstr(Year(Now()))
        + "] "
      )
    )
  } ON COLUMNS