2016-06-24 10 views
1

目標は、現在の月が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関数を削除すると、各Strtomember部分が独立して正しく動作することを確認しました。私は現在の年を照会し、Strtomemberを交換して現在の年-1を返すことができます。

注:テスト目的のために、私はIIF(Month(Now()) = '6'を投稿時に現在の月としています。私は現在の年-1を返すべきですが、今年戻っています。

答えて

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 
+0

何ラメ間違い!これは完全に動作します! – Mitch

関連する問題