动态 select 日期

Dynamically select date

如果当前月份为 1,则目标是通过上一年,否则通过当年。我总是想要上个月的数据。我有动态月份逻辑工作,只是年份给我带来了问题。我正在尝试使用 IIF 语句进行此操作,但始终 returning 当年。

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 时每个 Strtomember 部分都可以独立正常工作。我能够查询当年,然后交换 Strtomember 和 return 当前年份 -1.

注意:出于测试目的,我有 IIF( Month(Now()) = '6',因为它是 post 时的当前月份。我应该 return 当前年份 -1,但 return 当前年份。

尝试将“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