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

Toán tử trục Oracle

Bạn nhận được đầu ra như vậy đơn giản là vì bạn đang phát hành select câu lệnh chống lại một bảng (tbl của bạn bảng) có lẽ chứa một cột (ví dụ:cột khóa chính) xác định duy nhất một hàng và pivot toán tử xem xét các giá trị của cột đó. Đây là một ví dụ đơn giản:

/*assume it's your table tbl */
with tbl(unique_col, col1, col2) as(
  select 1, 'a',  'a1' from dual union all
  select 2, 'b',  'b1' from dual union all
  select 3, 'c',  'c1' from dual
)

Một truy vấn đối với một bảng như vậy sẽ cung cấp cho bạn kết quả (đầu ra không mong muốn) mà bạn đã cung cấp trong câu hỏi:

select A,B 
  from tbl
pivot(
  max(col2) for col1 in ('a' as A,'b' as B)
)

Kết quả:

A    B
--   --
a1   null   
null b1

Để tạo ra đầu ra mong muốn, bạn cần loại trừ cột có giá trị duy nhất cho một hàng:

select A
     , B 
  from (select col1 
             , col2  /*selecting only those columns we are interested in*/
           from tbl ) 
  pivot(
    max(col2) for col1 in ('a' as A,'b' as B)
  )

Kết quả:

A  B
-- --
a1 b1 


  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 thoát các ký tự <,> và &sang các thực thể html trong Oracle PL / SQL

  2. Cách xuất kết quả truy vấn Oracle sang tệp JSON khi sử dụng SQLcl

  3. Giới thiệu về PL / SQL Thu thập hàng loạt trong Cơ sở dữ liệu Oracle

  4. Sự kiện chờ Oracle mà mọi người nên biết

  5. oracle sql:cập nhật nếu tồn tại khác chèn