[英]Oracle - Bring Back previous Row based on Value and Next row
Oracle 11g R2架构设置 :
CREATE TABLE Data ( Cell, Date_Time, COOS, Unavailability ) AS
SELECT 'D02463', DATE '2015-11-16' + INTERVAL '10' HOUR, 1, 0 FROM DUAL
UNION ALL SELECT 'D02463', DATE '2015-11-16' + INTERVAL '9' HOUR, 0, 3600 FROM DUAL
UNION ALL SELECT 'D02463', DATE '2015-11-16' + INTERVAL '8' HOUR, 0, 3600 FROM DUAL
UNION ALL SELECT 'D02463', DATE '2015-11-16' + INTERVAL '7' HOUR, 0, 3600 FROM DUAL
UNION ALL SELECT 'D02463', DATE '2015-11-16' + INTERVAL '6' HOUR, 0, 3600 FROM DUAL
UNION ALL SELECT 'D02463', DATE '2015-11-16' + INTERVAL '5' HOUR, 1, 0 FROM DUAL
UNION ALL SELECT 'D02463', DATE '2015-11-16' + INTERVAL '4' HOUR, 1, 0 FROM DUAL
UNION ALL SELECT 'D02463', DATE '2015-11-16' + INTERVAL '3' HOUR, 1, 0 FROM DUAL
查询1 :
SELECT Cell,
Cell_Down,
Cell_Up,
(Cell_Up - Cell_Down)*24 AS Time_Down
FROM (
SELECT Cell,
Date_Time AS Cell_Up,
LAG( Date_Time ) OVER ( PARTITION BY Cell ORDER BY Date_Time ) + INTERVAL '1' HOUR AS Cell_Down
FROM Data
WHERE COOS = 1
)
WHERE Cell_Down < Cell_Up
结果 :
| CELL | CELL_DOWN | CELL_UP | TIME_DOWN |
|--------|----------------------------|----------------------------|-----------|
| D02463 | November, 16 2015 06:00:00 | November, 16 2015 10:00:00 | 4 |
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.