我有一张SO_STATUS表,它为服务订单的每个状态更改(我们将调用Service_Order_ID“Job_ID”)写入一条记录。 Job_ID引用SERVICE_ORDER表。当服务订单被初始化时,将为该状态类型“打开”(StatusType 2)写入一条记录,该记录显示日期时间。然后在状态表中写入另一条记录,以便它处于“进行中”状态(StatusType 1)。另外,当服务订单“关闭”时,另一条记录写入状态表(StatusType 3)。还有其他地位类型可能会发生,但这些是最常见的。在SO_STATUS表中的数据是这样的:如何找到同一列中两个日期之间的差异?
id Date Job_ID StatusTypeID EmployeeID
1 2012-01-01 09:05:00.000 51 2 5
2 2012-01-01 10:00:00.000 52 2 12
3 2012-01-01 10:01:00.000 51 1 5
4 2012-01-01 12:15:00.000 53 2 8
5 2012-01-01 12:16:00.000 51 3 5
6 2012-01-01 13:00:00.000 52 1 12
7 2012-01-01 14:00:00.000 52 3 12
8 2012-01-01 14:15:00.000 53 1 8
9 2012-01-01 15:00:00.000 54 2 11
10 2012-01-01 16:30:00.000 53 3 8
11 2012-01-01 15:00:00.000 54 1 11
12 2012-01-01 16:30:00.000 54 3 11
我需要能够找到每个JOB_ID的每一个状态变化之间的时间间隔。本质上,从开放到结束工作的时间长短。
输出会看起来像(EmployeeName会从EMPLOYEE表引用):
Job_ID Duration EmployeeName
51 03:11:00 Kyle
52 04:00:00 Chris
53 04:15:00 Fred
54 01:30:00 John
我将如何去获得这种类型的输出?谢谢。