Luôn giữ cho nó đơn giản, sử dụng tất cả các tính năng tích hợp sẵn của Oracle.
SELECT * FROM
(
SELECT FORMAT_NO, FORMAT_CODE, SEQ
, (CASE WHEN FORMAT_CODE = 'O' THEN LAG(seq, 1, 0) OVER (ORDER BY FORMAT_CODE) END) nn_seq
FROM
(
SELECT 1000 PRODUCT_NO, 1111 FORMAT_NO, 'P' FORMAT_CODE, 0 SEQ FROM dual
UNION
SELECT 1000, 1112, 'O', 0 FROM dual
UNION
SELECT 1000, 1113, 'H', 546 FROM dual
)
ORDER BY 2
)
WHERE FORMAT_CODE = 'O'
/
Đầu ra:1112 O 0 546
Trong truy vấn trên, bạn cần thực hiện đặt hàng trước, sau đó sử dụng Oracle tích hợp sẵn LAG () hoặc LEAD () tùy thuộc vào đơn đặt hàng và đầu ra mong muốn.