Search code examples
reporting-servicesssrs-2008-r2ssrs-2012

SSRS - How to pull previous Friday with SSRS expression


I'm needing help to pull the previous business days and excluding the weekends in SSRS. I use the following code, however this code doesn't look past the weekends.

Here's the code I normally use:

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

Does anyone have any thoughts on how to write an SSRS expression to look past the weekends and pull only business days?


Solution

  • Continued exploring this and worked with others here...This is what we came up with to look to the previous business day and exclude the weekends when pulling the report on a Monday. This expression would be added to the date parameter.

    =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())
    
    )