我有一个 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
我将如何获得这种类型的输出?谢谢你。