Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Tham gia một bảng với chính nó trong Oracle

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sử dụng GROUP BY với XMLCast và XMLQuery mang lại ORA-22950

  2. PLS-00302:thành phần phải được khai báo- Không thể giải quyết

  3. Việc chọn trường riêng biệt và số hàng chỉ để hiển thị số id sẽ cung cấp dữ liệu trùng lặp

  4. truy vấn oracle chậm với REGEXP_SUBSTR (AGGREGATOR, '[^;] +', 1, LEVEL)

  5. Ánh xạ khóa ngoại với tên cột tùy chỉnh