各位大侠 我有这样的一张表
物料号 开始包装时间 重量
.......
10001 2011-02-12 14:12:00 100
10002 2011-02-12 14:12:45 100
10002 2011-02-12 14:13:02 100
.........现在写一个视图物料号 包装所用时间 (秒) 重量
.....
10001 15 100
10002 17 100
10002 15 100
......其中 包装所用时间是下一个物料号的开始包装时间-这个物料号的开始包装时间
请问视图中 包装所用时间 (秒)这一列怎么解决,谢谢
物料号 开始包装时间 重量
.......
10001 2011-02-12 14:12:00 100
10002 2011-02-12 14:12:45 100
10002 2011-02-12 14:13:02 100
.........现在写一个视图物料号 包装所用时间 (秒) 重量
.....
10001 15 100
10002 17 100
10002 15 100
......其中 包装所用时间是下一个物料号的开始包装时间-这个物料号的开始包装时间
请问视图中 包装所用时间 (秒)这一列怎么解决,谢谢
with a as
(
select 10001 col1, '2011-02-12 14:12:00' col2, 100 col3 from dual union all
select 10002, '2011-02-12 14:12:45', 100 from dual union all
select 10002, '2011-02-12 14:13:02', 100 from dual
)
select a.*
,(to_date(lag(col2) over(order by col2 desc),'yyyy-mm-dd hh24:mi:ss')
-to_date(col2,'yyyy-mm-dd hh24:mi:ss'))*24*60*60 as dif
from a
; COL1 COL2 COL3 DIF
---------- ------------------- ---------- ----------
10002 2011-02-12 14:13:02 100
10002 2011-02-12 14:12:45 100 17
10001 2011-02-12 14:12:00 100 45
WITH t AS (SELECT
'10001' NO, to_date('2011-02-12 14:12:00', 'yyyy-mm-dd hh24:mi:ss') TIME, '100' qty FROM DUAL
UNION
SELECT
'10002', to_date('2011-02-12 14:12:45', 'yyyy-mm-dd hh24:mi:ss'), '100' FROM DUAL
UNION
SELECT
'10002', to_date('2011-02-12 14:13:02', 'yyyy-mm-dd hh24:mi:ss'), '100' FROM DUAL
)
SELECT NO, ROUND(TO_NUMBER(LEAD(TIME) OVER( ORDER BY rn) - TIME) * 24 * 60 * 60) , qty
FROM (SELECT NO, TIME, qty, row_number() OVER(ORDER BY NO, TIME) rn
FROM t)
----------------------------------------
1 10001 45 100
2 10002 17 100
3 10002 100