Reporting services SSRS-如何使用SSRS表达式提取上周五

Reporting services SSRS-如何使用SSRS表达式提取上周五,reporting-services,ssrs-2008-r2,ssrs-2012,Reporting Services,Ssrs 2008 R2,Ssrs 2012,我需要帮助来完成之前的工作日,不包括SSRS中的周末。我使用下面的代码,但是这段代码看起来不会超过周末 以下是我通常使用的代码: =DateAdd(DateInterval.Day , Switch(DatePart(DateInterval.WeekDay, Today()) = 2, -3 ,DatePart(DateInterval.WeekDay, Today()) = 1, -2 ,True, -1) , Today()) 有没有人想过如何编写SSRS表达式,以查看周末和仅提取工作日

我需要帮助来完成之前的工作日,不包括SSRS中的周末。我使用下面的代码,但是这段代码看起来不会超过周末

以下是我通常使用的代码:

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

有没有人想过如何编写SSRS表达式,以查看周末和仅提取工作日?

您可以设置不同的每周第一天(取决于地区或服务器配置方式)。在
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())

您可以设置不同的每周第一天(取决于地区或服务器配置方式)。在
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())

如果要在星期一运行报告时将日期参数默认为星期五(否则默认为前一天),请尝试以下操作:

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

如果要在星期一运行报告时将日期参数默认为星期五(否则默认为前一天),请尝试以下操作:

=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)),今天)

继续探索这一点,并在这里与其他人一起工作……这是我们在周一提取报告时想到的上一个工作日,不包括周末。此表达式将添加到日期参数中

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

)

继续探索这一点,并在这里与其他人合作……这是我们提出的,以查看前一个工作日,并排除周末时,在周一拉报告。此表达式将添加到日期参数中

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

)

这个表达式也会影响我最近使用的前一个工作日。只需使用此代码更新日期参数

=DateAdd("d",Switch(DatePart("w", Today) = 2,-3,DatePart("w", Today) = 1,-2,True,-1),Today)

这个表达式也会影响我最近使用的前一个工作日。只需使用此代码更新日期参数

=DateAdd("d",Switch(DatePart("w", Today) = 2,-3,DatePart("w", Today) = 1,-2,True,-1),Today)

你的意思是你想要某一天的前一个M-F工作日吗?不,我需要调出前一个星期五,并在报告中设置它。每个星期一我们都需要提取星期五的数据。你说的代码看起来不超过周末是什么意思?当报告在星期日、星期一、星期二、星期三等运行时,您是否可以编辑您的问题,以包括您对日期范围的期望?因此,我有报告说,业务每周一运行,但他们需要从上一个工作日星期五提取数据。我在参数中设置了表达式以提取前一个工作日,但它只返回星期天(根据上面的代码)。示例:10月4日星期一…我需要拉4/7的表达式(上一个工作日)有没有办法编写表达式跳过周末,只拉前一个工作日?你的意思是你想要给定日期的前一个M-F工作日?没有,我需要拉前一个星期五,并在报告中设置它。每个星期一我们都需要提取星期五的数据。你说的代码看起来不超过周末是什么意思?当报告在星期日、星期一、星期二、星期三等运行时,您是否可以编辑您的问题,以包括您对日期范围的期望?因此,我有报告说,业务每周一运行,但他们需要从上一个工作日星期五提取数据。我在参数中设置了表达式以提取前一个工作日,但它只返回星期天(根据上面的代码)。示例:星期一4/10…我需要表达式来拉4/7(上一个工作日)有没有办法编写表达式来跳过周末,只拉前一个工作日?