我目前的查询写得非常糟糕,可以查明几个月内的实际疾病日(例如 - 如果员工的病假开始日期为01/01/2017,结束日期为2017年3月1日,它将计算他们应该工作的所有病假(例如,周一至周五,然而,没有固定的工作模式)并将他们生病的月份分开。目前的报告需要10分钟才能运行一个会计年度。
我想重新编写查询,以使其表现更好,并且(可能)更准确。
我有三个主要表格可供使用:
下表的例子。
疾病表:
EMP ID | Start Date | End Date | Location ID
--------|------------------|------------------|-------------
1 | 01/02/2017 08:30 | 19/03/2017 23:59 | 20
2 | 04/02/2017 08:30 | 06/02/2017 23:59 | 4
3 | 02/02/2017 09:00 | 03/02/2017 23:59 | 15
4 | 03/02/2017 08:45 | 03/02/2017 23:59 | 7
5 | 05/02/2017 08:30 | 10/04/2017 23:59 | 9
活动表:
| EMP ID | Start Date | End Date | Activity Type | Location ID | Group ID |
|--------|------------------|------------------|---------------|-------------|----------|
| 1 | 02/01/2017 13:18 | 02/01/2017 17:00 | 11 | 20 | 1 |
| 1 | 02/01/2017 08:30 | 02/01/2017 12:12 | 11 | 20 | 1 |
| 2 | 02/01/2017 13:18 | 02/01/2017 17:00 | 13 | 4 | 4 |
| 2 | 02/01/2017 08:30 | 02/01/2017 12:12 | 13 | 4 | 4 |
| 3 | 02/01/2017 13:18 | 02/01/2017 17:00 | 1 | 15 | 2 |
| 3 | 02/01/2017 08:30 | 02/01/2017 12:12 | 1 | 15 | 2 |
| 4 | 02/01/2017 13:18 | 02/01/2017 17:00 | 4 | 7 | 5 |
| 4 | 02/01/2017 08:30 | 02/01/2017 12:12 | 4 | 7 | 5 |
| 5 | 02/01/2017 13:18 | 02/01/2017 17:00 | 10 | 9 | 3 |
| 5 | 02/01/2017 08:30 | 02/01/2017 12:12 | 10 | 9 | 3 |
| 5 | 02/01/2017 17:00 | 02/01/2017 18:00 | 3 | 9 | 3 |
结果将在表格/矩阵中用于SSRS,如下所示:
| Group | Location | Total Sickness Days - Months (fiscal year - April-Mar) |
|-------|----------|----------------------------------------------------------|
| 1 | 20 | xx |
| 2 | 4 | xx |
| 3 | 15 | xx |
| 4 | 7 | xx |
| 5 | 9 | xx |
我不确定这种查询的最佳做法是什么。任何帮助将非常感谢并提前感谢。
编辑:逻辑。