Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Operator pivot Oracle

Anda mendapatkan output seperti itu hanya karena Anda mengeluarkan select pernyataan terhadap tabel (tblyour Anda table) yang mungkin berisi kolom (misalnya kolom kunci utama) yang secara unik mengidentifikasi baris dan pivot operator mempertimbangkan nilai kolom itu. Berikut ini contoh sederhananya:

/*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
)

Kueri terhadap tabel seperti itu akan memberi Anda keluaran (keluaran yang tidak diinginkan) yang Anda berikan dalam pertanyaan:

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

Hasil:

A    B
--   --
a1   null   
null b1

Untuk menghasilkan keluaran yang diinginkan, Anda perlu mengecualikan kolom dengan nilai unik untuk satu baris:

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)
  )

Hasil:

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. Dukungan Bool Oracle SQL

  2. _gc_fusion_compression

  3. Cara Menginstal Oracle di Mac

  4. Bagaimana klausa 'dalam' bekerja di oracle

  5. Oracle Cari semua tabel semua kolom untuk string