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

Tự động chia các hàng thành cột trong Oracle

Oracle 11g cung cấp một PIVOT hoạt động mà bạn muốn.

Giải pháp Oracle 11g

select * from
(select id, k, v from _kv) 
pivot(max(v) for k in ('name', 'age', 'gender', 'status')

(Lưu ý:Tôi không có bản sao của 11g để kiểm tra tính năng này nên tôi chưa xác minh chức năng của nó)

Tôi nhận được giải pháp này từ:http://orafaq.com/wiki/PIVOT

CHỈNH SỬA - tùy chọn xoay xml (cũng là Oracle 11g)
Rõ ràng là cũng có một pivot xml tùy chọn khi bạn không biết tất cả các tiêu đề cột có thể có mà bạn có thể cần. (xem LOẠI XML phần gần cuối trang có tại http://www.oracle.com/technetwork/articles/sql/11g-pivot-097235.html)

select * from
(select id, k, v from _kv) 
pivot xml (max(v)
for k in (any) )

(Lưu ý:Như trước đây, tôi không có bản sao của 11g để kiểm tra tính năng này nên tôi chưa xác minh chức năng của nó)

Chỉnh sửa2: Đã thay đổi v trong pivotpivot xml câu lệnh cho max(v) vì nó được cho là được tổng hợp như đã đề cập trong một trong các nhận xét. Tôi cũng đã thêm in mệnh đề không phải là tùy chọn cho pivot . Tất nhiên, phải chỉ định các giá trị trong in mệnh đề đánh bại mục tiêu có một truy vấn pivot / crosstab hoàn toàn động như mong muốn của người đăng câu hỏi này.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. cách chuyển biến từ shell script sang sqlplus

  2. Làm cách nào để tải Oracle SCHEMA dưới dạng tập lệnh DDL với DBMS_METADATA (và SCHEMA_EXPORT)

  3. tính năng tự động gia tăng oracle với trình tự và trình kích hoạt không hoạt động chính xác

  4. Cách sử dụng Chỉ mục ảo trong Cơ sở dữ liệu Oracle

  5. Giới thiệu về xử lý ngoại lệ PL / SQL trong cơ sở dữ liệu Oracle