2017-04-11 51 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)