2015-12-30 47 views
0

我有一个具体的方案来追踪进出时间库存项目。SQLite的:查询一个特定的时间跟踪情况

我有以下格式

 Inv_id  in_time    out_time 
1) I_1111 2015-11-29 21:05:00. 2015-12-01 03:00:00 
2) I_1111 2015-12-01 05:00:00. 2015-12-01 09:00:00 
3) I_1111 2015-12-01 15:00:00. 2015-12-01 17:00:00 
4) I_1111 2015-12-01 21:00:00. NULL 
  1. 任何时候库存放入冰箱的Inventory_track表,我插入一个新的记录与In_time的
  2. 随时清点取出,我更新out_time(不是插入,只是一个更新)

在任何给定的点,我想找到时间,我库存花费在以外的冻结位置。基本上我想要做的是:

(record_2's in_time- record_1's out_time) + (record_3's in_time- record_2's out_time) 

等对于给定的广告资源。 有人可以帮我在sqlite查询为此。我如何在上面描述的这种情况下使用自连接。

回答

0

可以采取不同的方法。找出最大和最小in_time之间的差异,并减去物品在冷冻箱中停留的时间间隔的总和。

WITH inventory_time_in_freezer AS (
SELECT i1.inv_id, SUM(i1.out_time - i1.in_time) as time_in_freezer 
FROM inventory_tack i1 
WHERE out_time IS NOT NULL 
GROUP BY i1.inv_id 
) 
SELECT i2.inv_id, MAX(i2.in_time) - MIN(i2.in_time) - iif.time_in_freezer 
FROM inventory_tack i2 
JOIN inventory_time_in_freezer iif ON iif.inv_id = i2.inv_id 
GROUP BY i2.inv_id, iif.time_in_freezer 

P.S.上面的查询没有经过测试,只是为了说明这个想法。