对于 sql 2008 中的审计表,我需要计算每个订单在给定步骤中的时间(表示为新列)。
Old New Time Entered Order Number
NULL Step 1 4/30/12 10:43 1C2014A
Step 1 Step 2 5/2/12 10:17 1C2014A
Step 2 Step 3 5/2/12 10:28 1C2014A
Step 3 Step 4 5/2/12 11:14 1C2014A
Step 4 Step 5 5/2/12 11:19 1C2014A
Step 5 Step 9 5/3/12 11:23 1C2014A
NULL Step 1 5/18/12 15:49 1C2014B
Step 1 Step 2 5/21/12 9:21 1C2014B
Step 2 Step 3 5/21/12 9:34 1C2014B
Step 3 Step 4 5/21/12 10:08 1C2014B
Step 4 Step 5 5/21/12 10:09 1C2014B
Step 5 Step 6 5/21/12 16:27 1C2014B
Step 6 Step 9 5/21/12 18:07 1C2014B
NULL Step 1 6/12/12 10:28 1C2014C
Step 1 Step 2 6/13/12 8:36 1C2014C
Step 2 Step 3 6/13/12 9:05 1C2014C
Step 3 Step 4 6/13/12 10:28 1C2014C
Step 4 Step 6 6/13/12 10:50 1C2014C
Step 6 Step 8 6/13/12 12:14 1C2014C
Step 8 Step 4 6/13/12 15:13 1C2014C
Step 4 Step 5 6/13/12 15:23 1C2014C
Step 5 Step 8 6/13/12 15:30 1C2014C
Step 8 Step 9 6/18/12 14:04 1C2014C
- 这些步骤不需要是连续的,因此步骤 1 可以在步骤 5 之后发生。
- 订单的记录不是按步骤或订单顺序存储的,而是根据输入的时间与其他订单混合。按订单号排序的样本数据然后是新的是不正常的,不能依赖。
- 对于任何给定的顺序,每个步骤都可以重复,如果为一个顺序重复,则逐步求和。
- Old 列中的起始步记录始终为空
- 对于给定订单,起始步长计算为新列中的值与旧列中的值之间的时间差。
输出可以很简单:
Order Number Step Time in Step
1C2014A Step 1 6:09