SSRS 只计算工作日

SSRS count working days only

我需要一些帮助,我的 案例

1-两个参数 date from , date to

2-用户手动输入的团队参数数量,供以后在某些计算中使用

要求

只计算工作日(每周 6 天),根据过滤的时间段(日期从和到)计算周五除外

代码

=(COUNT(IIF(Fields!Job_Status.Value="Closed",1,Nothing))) / 
((DateDiff(DateInterval.day,Parameters!DateFrom.Value,Parameters!ToDate.Value
)) * (Parameters!Number_of_teams.Value)) 

备注

此代码运行良好,但它计算所有天数

提前致谢

试试这个:

=(DATEDIFF(DateInterval.Day, CDATE("2016-02-14"), CDATE("2016-02-17")) + 1)
-(DATEDIFF(DateInterval.WeekOfYear, CDATE("2016-02-14"), CDATE("2016-02-17")) * 2)
-(IIF(WeekdayName(DatePart(DateInterval.Weekday,CDATE("2016-02-14"),FirstDayOfWeek.System))="sunday",1,0)
-(IIF(WeekdayName(DatePart(DateInterval.Weekday,CDATE("2016-02-17"),FirstDayOfWeek.System))="saturday",1,0)
))

在上述情况下,它会返回给定范围内周一到周五的计数 returns 3. 对于 StartDate = 2016-02-14 和 EndDate = 2016-02-21,它 returns 5.

更新: 从计数中排除星期五的表达式。

=(DATEDIFF(DateInterval.Day, Parameters!DateFrom.Value, Parameters!ToDate.Value) + 1)
-(DATEDIFF(DateInterval.WeekOfYear, Parameters!DateFrom.Value, Parameters!ToDate.Value) * 1)
-(IIF(WeekdayName(DatePart(DateInterval.Weekday,Parameters!ToDate.Value,FirstDayOfWeek.System))="friday",1,0))

测试:

 DateFrom     ToDate     Result
2016-02-12  2016-02-19     6
2016-02-12  2016-02-18     6
2016-02-12  2016-02-15     3

我很奇怪看到周六和周日而不是周五作为工作日。

如果这对你有帮助,请告诉我。

从长远来看,此类问题最可持续的解决方案是创建一个“date dimension”又名 "calendar table"。这样一来,任何不符合某些简洁数学模式的日期分类怪癖都可以得到解决。如果您的政府决定从明年开始宣布日期 X 为 public 假期,只需将其添加到您的 public 假期列(属性)。如果您想按 "work days, weekends, and public holidays" 分组,无需重新发明轮子,只需将该分类添加到日历 table,每个人都可以从中受益,您无需担心 calculation/classification。您可能需要该月的第一个或最后一个工作日。很简单,按日历 table 中的那一列过滤。