我想计算同一个表中2个日期字段之间的差异,但是这些值不在同一行中。下面是一个示例表
ID Cust_ID Code Order_Time Delivery_Time Duration
1 4 Order 01/01/15 14:15
2 5 order 02/02/15 18:30
3 4 deliver 03/02/15 18:15 28:00
4 6 order 04/02/15 16:22
我需要通过从此客户的delivery_time减去Cust_ID 4的订单时间来计算交付订单所需的时间(持续时间)(以小时为单位)。在上面的示例中,我输入的数字为28小时。
答案 0 :(得分:0)
SELECT t._cust_id, MAX(order_time) order_time, MAX(delivery_time) delivery_time, MAX(delivery_time) - MAX(order_time) as diff_time
FROM yourTable t
WHERE t.cust_id = 4
GROUP BY t.cust_id
或
SELECT
o.order_time, d.delivery_time, d.delivery_time - o.order_time as diff_time
FROM yourTable o, yourTable d
WHERE LOWER(o.code) = 'order'
and LOWER(d.code) = 'deliver'
AND o.cust_id = d.cust_id
GROUP BY o._cust_id
-----更新表----- 你能检查以下是否有效吗?我不确定......
UPDATE
(
SELECT
o.order_time, t.delivery_time order_delivery_time, d.delivery_time, d.delivery_time - o.order_time as diff_time
FROM yourTable o, yourTable d
WHERE LOWER(o.code) = 'order'
and LOWER(d.code) = 'deliver'
AND o.cust_id = d.cust_id
GROUP BY o._cust_id
) t
SET
t.order_delivery_time = t.diff_time
答案 1 :(得分:0)
非常感谢Veverke,他不仅帮我解决了这个问题,而且更好地理解了我在SQL中可以做些什么(自我加入)。
这是有效的SELECT查询:
SELECT
d.delivery_time - o.order_time as diff_time
FROM yourTable o, yourTable d
WHERE o.code = 'order'
AND d.code = 'deliver'
AND o.cust_id = d.cust_id
GROUP BY o.cust_id, d.delivery_time,o.order_time
ORDER BY o.cust_id;