2014-03-19 91 views
0

我在SSAS 2005立方體上構建了SSRS 2005報告。該報告具有來自「時間」維度的開始日期和結束日期參數。我需要將默認值分別設置爲上週日和上週六。 (財政周是從星期日到星期六)MDX獲得上週日和週六

例如

開始日期:[時間]。[日]。 & [20140309] 結束日期:[時間]。[日]。 & [20140315]

我該如何動態地做到這一點?我的意思是這個星期是高於日期,但下個星期應該是3月16日,3月22日。我知道如何在T-SQL中做到這一點,這將涉及一些計算與系統日期,但MDX?

+0

您是否想要在[[Time]。[Day]'層次結構中包含上個星期六和最後一個星期日?或者是前一個星期六,直到今天,以及今天的星期天還是今天的下一個? – FrankPl

+0

@FrankPl時間層級包含財政年度,財政周和日期。你的意思是我把上個星期天,上個星期六換成每一排? – thotwielder

+0

不,我的問題是「我如何確定'最後'週六/週日是什麼?」?我能否假設你需要包含在時間維度中的最後一個星期六和星期天?我必須考慮當前日期嗎? – FrankPl

回答

1

你可以使用一些VBA Date functions available in MDX

StrToMember('[Time].[Day].&[' 
      + Format(DateAdd('d', - DatePart('w', Now(), 1), Now()), 'yyyyMMdd') 
      + ']' 
      ) 

應該給你的最後一個星期六在今天之前,和

StrToMember('[Time].[Day].&[' 
      + Format(DateAdd('d', - DatePart('w', Now(), 1) - 6, Now()), 'yyyyMMdd') 
      + ']' 
      ) 

的最後一個星期日之前。

DateAdd('d', ...)的第二個參數是要添加的天數。由於這是負面的,我們會在很多日子裏回到過去。 DatePart('w', ...)返回工作日號碼(星期日= 1,星期一= 2,...)。因此,如果您從今天起減去「週日數」天,幸運的是您已經在上週六。再減去六天,你會在那之前的最後一個星期一到達。

相關問題