随时间跟踪工作量

时间:2018-07-09 08:17:54

标签: tsql reporting-services

我有一个工作数据库,其中列出:

  • 工作类型
  • 日期作业开始
  • 日期工作完成

有人问我是否可以生成一个可以在每个星期一(或任何时候)运行的报告:

a)显示了当前的工作量,

b)显示了前一周的工作量(以及当前财政年度的前一周-1/4/18-31/3/19)。

其日期参数为:

week 1: 1/4/18 - 7/4/18

week 2: 8/4/18 - 15/4/18 etc

所以我要查看的实际工作量总计为1/4 / 18、8 / 4/18等

如果“完成工作的日期”字段中没有日期,则认为该工作处于活动状态。

例如,如果我们看一下这四个工作:

job 1 started 31/3/18 finished 21/4/18
job 2 started 2/4/18 finished 20/4/18
job3 started 6/4/18 unfinished
and job 4 start on 10/4/18 unfinished

然后在18/4/4上运行报告,我需要它的输出,播出这几周的工作量:

Workload:

Week 1(1/4/18)    3
Week 2 (8/4/18)   3
Week 3            4
Week 4            2

3 3 4 2

因此,就当前的工作量而言,这很容易,并且只是“日期已完成的工作”字段为空的一部分工作。

但是,我一直在努力寻找如何随时间推移计算​​工作量的方法-基本上,我需要查询以确定如何准确地计算出特定日期的工作完成字段何时为空。

任何帮助/帮助将不胜感激。

谢谢。

1 个答案:

答案 0 :(得分:0)

基于对问题的理解,我的解决方案

p {
  position: relative;
  right: 100px;
  width: 400px;
  text-align: center;
}

-计算从第1周04062018开始到10062018并在本周之后完成的完成的工作

DECLARE @t TABLE ( JobType NVARCHAR(50), JobStart DATETIME, JobFinish DATETIME )
INSERT INTO @t
(JobType,JobStart, JobFinish)
VALUES
('Type1', '20180604', '20180611')
,('Type2', '20180611', '20180626')
,('Type3', '20180618', '20180620')
,('Type4', '20180625', NULL)

/*
Week Date Ranges
1.  04062018    to  10062018
2.  11062018    to  17062018
3.  18062018    to  24062018
4.  25062018    to  01072018
*/

输出

SELECT
     T.JobType
    ,T.JobStart
    ,T.JobFinish 
FROM @t T
WHERE (T.JobStart >= '20180604' AND T.JobStart <= '20180610') AND T.JobFinish > '20180610'