2017-04-11 58 views
0

我需要幫助才能拉動之前的工作日,並排除SSRS中的週末。我使用下面的代碼,但是這段代碼並沒有看過週末。SSRS - 如何使用SSRS表達式爲上週五拉動

下面的代碼我通常使用:

=DateAdd(DateInterval.Day 
, Switch(DatePart(DateInterval.WeekDay, Today()) = 2, -3 
,DatePart(DateInterval.WeekDay, Today()) = 1, -2 
,True, -1) 
, Today()) 

有沒有人對如何寫SSRS表情看過去的週末和拉只工作日有什麼想法?

+0

你的意思是你想要在某一天的前一個M-F的工作日? –

+0

不,我需要取消上週五的報告。每週一我們需要提取週五的數據。 – BIReportGuy

+0

你的代碼是什麼意思,不看週末?您是否可以編輯問題以包含報告在星期日,星期一,星期二,星期三等運行時對日期範圍的期望? –

回答

0

繼續探索這個並與其他人在這裏工作......這就是我們想出了一下以前的工作日和拉動在週一的報告時,排除週末。該表達式將被添加到日期參數中。

=Switch(WeekdayName(DatePart("w", Today)) = "Wednesday",DateAdd(DateInterval.Day 
    , Switch(DatePart(DateInterval.WeekDay, Today()) = 2, -3 
,DatePart(DateInterval.WeekDay, Today()) = 1, -2,True, -2) , Today()), 

    WeekdayName(DatePart("w", Today)) = "Thursday",DateAdd(DateInterval.Day 
    , Switch(DatePart(DateInterval.WeekDay, Today()) = 2, -3 
,DatePart(DateInterval.WeekDay, Today()) = 1, -2,True, -2) , Today()), 

    WeekdayName(DatePart("w", Today)) = "Friday",DateAdd(DateInterval.Day 
    , Switch(DatePart(DateInterval.WeekDay, Today()) = 2, -3 
,DatePart(DateInterval.WeekDay, Today()) = 1, -2,True, -2) , Today()), 

    WeekdayName(DatePart("w", Today)) = "Saturday",DateAdd(DateInterval.Day 
    , Switch(DatePart(DateInterval.WeekDay, Today()) = 2, -3 
,DatePart(DateInterval.WeekDay, Today()) = 1, -2,True, -2) , Today()), 

    WeekdayName(DatePart("w", Today)) = "Sunday",DateAdd(DateInterval.Day 
    , Switch(DatePart(DateInterval.WeekDay, Today()) = 2, -3 
,DatePart(DateInterval.WeekDay, Today()) = 1, -2,True, -3) , Today()), 

    WeekdayName(DatePart("w", Today)) = "Monday",DateAdd(DateInterval.Day 
    , Switch(DatePart(DateInterval.WeekDay, Today()) = 2, -3 
,DatePart(DateInterval.WeekDay, Today()) = 1, -2,True, -4) , Today()), 

    WeekdayName(DatePart("w", Today)) = "Tuesday",DateAdd(DateInterval.Day 
    , Switch(DatePart(DateInterval.WeekDay, Today()) = 2, -3 
,DatePart(DateInterval.WeekDay, Today()) = 1, -2,True, -2) , Today()) 

) 
0

您可能有不同的第一天設置(取決於地區或如何配置服務器)。明確了DatePart功能設置FirstDayOfWeek應該提供一致的結果,無論此設置:

=DateAdd(DateInterval.Day 
    , Switch(DatePart(DateInterval.WeekDay, Today(), FirstDayOfWeek.Sunday) = 2, -3 
     ,DatePart(DateInterval.WeekDay, Today(), FirstDayOfWeek.Sunday) = 1, -2 
     ,True, -1) 
    , Today()) 
0

如果您希望當報告在星期一運行(否則默認爲前一天),默認的日期參數到週五,試試這個:

=DateAdd(DateInterval.Day, IIf(DatePart(DateInterval.Weekday, Today) = 2, -3, -1), Today)

這可能是你真正需要的。

無論運行報表的一週中的哪一天,都可以使用以下表達式來將日期參數默認爲前一個星期五。這對每週報告可能有一定的價值。

=DateAdd(DateInterval.Day, -(DatePart(DateInterval.Weekday, DateAdd(DateInterval.Day, 1, Today), 0, 0)), Today)