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

Làm thế nào để chuyển đổi Hàng thành Cột trong Oracle?

Nếu bạn đang sử dụng Oracle 10g, bạn có thể sử dụng DECODE chức năng xoay các hàng thành cột:

CREATE TABLE doc_tab (
  loan_number VARCHAR2(20),
  document_type VARCHAR2(20),
  document_id VARCHAR2(20)
);

INSERT INTO doc_tab VALUES('992452533663', 'Voters ID', 'XPD0355636');
INSERT INTO doc_tab VALUES('992452533663', 'Pan card', 'CHXPS5522D');
INSERT INTO doc_tab VALUES('992452533663', 'Drivers licence', 'DL-0420110141769');

COMMIT;

SELECT
    loan_number,
    MAX(DECODE(document_type, 'Voters ID', document_id)) AS voters_id,
    MAX(DECODE(document_type, 'Pan card', document_id)) AS pan_card,
    MAX(DECODE(document_type, 'Drivers licence', document_id)) AS drivers_licence
  FROM
    doc_tab
GROUP BY loan_number
ORDER BY loan_number;

Đầu ra:

LOAN_NUMBER   VOTERS_ID            PAN_CARD             DRIVERS_LICENCE    
------------- -------------------- -------------------- --------------------
992452533663  XPD0355636           CHXPS5522D           DL-0420110141769     

Bạn có thể đạt được điều tương tự bằng cách sử dụng Oracle PIVOT mệnh đề, được giới thiệu trong 11g:

SELECT *
  FROM doc_tab
PIVOT (
  MAX(document_id) FOR document_type IN ('Voters ID','Pan card','Drivers licence')
);

Ví dụ về SQLFiddle với cả hai giải pháp: Ví dụ về SQLFiddle

Đọc thêm về xoay vòng tại đây:Pivot In Oracle của Tim Hall



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nó chính xác là gì một BLOB trong ngữ cảnh DBMS

  2. Sử dụng setDate trong PreparedStatement

  3. Truy vấn con Oracle không thấy biến từ khối ngoài 2 cấp trở lên

  4. cách tìm chỉ mục trên bảng trong oracle

  5. Oracle-XMLTYPE:Cách cập nhật giá trị