date_entry time_start time_finished idle_code qty_good
8/8/2013 13:00 13:30 6 10
8/8/2013 13:30 15:20 0 20
8/8/2013 15:20 15:30 6 5
8/8/2013 15:30 16:25 0 10
8/8/2013 16:25 16:40 7 0
8/8/2013 16:40 17:25 0 40
8/8/2013 17:25 17:40 3 10
8/8/2013 17:40 24:00 1
8/8/2013 24:00 00:00 1
8/8/2013 00:00 00:30 1
空闲时间图例:
0 Production
1 Adjustment/Mold
2 Machine
3 Quality Matter
4 Supply Matter
5 Mold Change
6 Replacer
7 Others
----------结果------------------------------------ - 总分钟
idle_code total mins
1 - 410:00 mins
2 - 00:00
3 - 15:00
4 - 00:00
5 - 00:00
6 - 40:00
7 - 15:00
0 - 210:00
---------其他报道---------------------------------- 生产效率报告
idle_code total mins
1 410:00 mins
2 00:00 mins
3 15:00 mins
4 00:00 mins
5 00:00 mins
7 15:00 mins
总空闲时间= 440:00分钟(公式:总和(空闲的总分钟1,2,3,4,5,7))
闲置率= 63.77%(公式:(总闲置时间/总实际生产时间)* 100)
总操作时间= 250:00分钟(公式总和(idl_code'0'和idle_code'6'))
机器效率= 36.23%(公式(总运行时间/总实际生产时间* 100))
总实际生产时间= 690:00分钟(公式总和(total_idle_time +总运行时间))
答案 0 :(得分:0)
您可以将此作为单个SQL语句执行此操作,将开始和结束时间之间的差异相加,并对idle_code进行分组。 (不要忘记将它从Idle_Code表转换为生产数据表)。这样可以避免将所有详细数据检索到客户端,并在那里进行分组和求和。
如果您需要将此作为计算列执行,并且您已检索了所有详细数据,则在idle_code上创建一个组,并创建一个总和的计算列(time_finished - time_start用于组1)。如果这些列是日期时间而不仅仅是时间值,则SecondsAfter()函数可以执行此操作。
您如何存储time_start和time_finished列?那些是datetime数据类型吗?因为这使计算更容易。如果它们只是次数,那么当这些时间跨越到午夜到第二天时,你将无法计算持续时间。