SSRS 逐月日期表达式从前一个工作日开始
SSRS Month over Month Date Expression beginning with Previous business day
业务要求是要有一个从前一个工作日开始的月度报告。我如何实现?
月复一月 - 我的表达是:
=dateadd("m",-3,Today)
对于前一个工作日 - 我的表达是:
=DateAdd(DateInterval.Day
, Switch(DatePart(DateInterval.WeekDay, Today()) = 2, -3
,DatePart(DateInterval.WeekDay, Today()) = 1, -2
,True, -1)
, Today())
我怎样才能将这些组合成一个表达式,以便逐月从前一个工作日而不是今天开始?
谢谢,
您可以在开始工作日表达式中使用您之前的工作日表达式:
=dateadd("m",-3,
DateAdd(DateInterval.Day
, Switch(DatePart(DateInterval.WeekDay, Today()) = 2, -3
,DatePart(DateInterval.WeekDay, Today()) = 1, -2
,True, -1)
, Today())
)
然而,外部 DATEADD
函数可能会生成一个非工作日的日期,如果您的数据源与非工作日的日期不匹配,您的查询将从该日期开始 return 行这不是问题,当您有非营业日期并且您不想报告时,问题就来了。
为简单起见,我将创建一个名为 ThreeMonthsPreviousDay 的隐藏参数(检查参数属性中的隐藏 属性 单选控件),将其设置为 Date/Time 数据类型并在默认值 属性.
=DateAdd(DateInterval.Month,-3,
DateAdd(DateInterval.Day
, Switch(DatePart(DateInterval.WeekDay, Today()) = 2, -3
,DatePart(DateInterval.WeekDay, Today()) = 1, -2
,True, -1)
, Today())
)
现在您可以获得前一个工作日之前 3 个月的营业日期,因此请使用:
=DateAdd(DateInterval.Day,
Switch(
DatePart(DateInterval.WeekDay, Parameters!ThreeMonthsPreviousDay.Value) = 2, -3,
DatePart(DateInterval.WeekDay, Parameters!ThreeMonthsPreviousDay.Value) = 1, -2,
True, 0),
Parameters!ThreeMonthsPreviousDay.Value)
如果有帮助请告诉我。
业务要求是要有一个从前一个工作日开始的月度报告。我如何实现?
月复一月 - 我的表达是:
=dateadd("m",-3,Today)
对于前一个工作日 - 我的表达是:
=DateAdd(DateInterval.Day
, Switch(DatePart(DateInterval.WeekDay, Today()) = 2, -3
,DatePart(DateInterval.WeekDay, Today()) = 1, -2
,True, -1)
, Today())
我怎样才能将这些组合成一个表达式,以便逐月从前一个工作日而不是今天开始?
谢谢,
您可以在开始工作日表达式中使用您之前的工作日表达式:
=dateadd("m",-3,
DateAdd(DateInterval.Day
, Switch(DatePart(DateInterval.WeekDay, Today()) = 2, -3
,DatePart(DateInterval.WeekDay, Today()) = 1, -2
,True, -1)
, Today())
)
然而,外部 DATEADD
函数可能会生成一个非工作日的日期,如果您的数据源与非工作日的日期不匹配,您的查询将从该日期开始 return 行这不是问题,当您有非营业日期并且您不想报告时,问题就来了。
为简单起见,我将创建一个名为 ThreeMonthsPreviousDay 的隐藏参数(检查参数属性中的隐藏 属性 单选控件),将其设置为 Date/Time 数据类型并在默认值 属性.
=DateAdd(DateInterval.Month,-3,
DateAdd(DateInterval.Day
, Switch(DatePart(DateInterval.WeekDay, Today()) = 2, -3
,DatePart(DateInterval.WeekDay, Today()) = 1, -2
,True, -1)
, Today())
)
现在您可以获得前一个工作日之前 3 个月的营业日期,因此请使用:
=DateAdd(DateInterval.Day,
Switch(
DatePart(DateInterval.WeekDay, Parameters!ThreeMonthsPreviousDay.Value) = 2, -3,
DatePart(DateInterval.WeekDay, Parameters!ThreeMonthsPreviousDay.Value) = 1, -2,
True, 0),
Parameters!ThreeMonthsPreviousDay.Value)
如果有帮助请告诉我。