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

Sử dụng pivot trên nhiều cột của một hàng Oracle

Như tài liệu cho thấy, bạn có thể có nhiều mệnh đề hàm tổng hợp. Vì vậy, bạn có thể làm điều này:

select * from (
  select * from tab1
)
pivot (
  count(type) as ct, sum(weight) as wt, sum(height) as ht
  for type in ('A' as A, 'B' as B, 'C' as C)
);

A_CT A_WT A_HT B_CT B_WT B_HT C_CT C_WT C_HT
---- ---- ---- ---- ---- ---- ---- ---- ----
   2  110   22    1   40    8    1   30   15 

Nếu bạn muốn các cột theo thứ tự đã hiển thị thì hãy thêm một cấp truy vấn con khác:

select a_ct, b_ct, c_ct, a_wt, b_wt, c_wt, a_ht, b_ht, c_ht
from (
  select * from (
    select * from tab1
  )
  pivot (
    count(type) as ct, sum(weight) as wt, sum(height) as ht
    for type in ('A' as A, 'B' as B, 'C' as C)
  )
);

A_CT B_CT C_CT A_WT B_WT C_WT A_HT B_HT C_HT
---- ---- ---- ---- ---- ---- ---- ---- ----
   2    1    1  110   40   30   22    8   15 

SQL Fiddle.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tôi có cần tạo chỉ mục trên khóa ngoại trên Oracle không?

  2. UPSERT vào bảng với tên bảng động

  3. Viết trong ExcelSheet bằng gói UTL_FILE trong Oracle

  4. thông báo lỗi sqldeveloper:Bộ điều hợp mạng không thể thiết lập lỗi kết nối

  5. Bỏ người dùng được kết nối trong cơ sở dữ liệu Oracle