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

Kurangi 19 kolom menjadi 5 kolom

Apa yang Anda cari yang sederhana PIVOT fitur.

Satu-satunya perbedaan adalah Anda tidak ingin pivot pada kolom nilai , tetapi mungkin pada urutan kata kunci .

Di sini kueri untuk berporos pada urutan abjad dari kata kunci.

Perhatikan, bahwa dua subkueri pertama hanya menghasilkan data yang disederhanakan sebagai berikut:

CODPRO  CODRCA
------- ------
400JE   LOGIST
400JE   INDLEG
50EFJ10 TP    
50EFJ10 ESPVER
50EFJ10 AGRICU
50EFJ10 INDLEG
50EFJ10 LOGIST

Kueri menghitung terlebih dahulu nomor baris menggunakan urutan CODRCA dan pivot di atasnya:

with PRO as (
select '400JE' CODPRO from dual union all
select '50EFJ10' CODPRO from dual),
RCA as (
select '400JE' CODPRO, 'LOGIST' CODRCA from dual union all
select '400JE' CODPRO, 'INDLEG' CODRCA from dual union all
select '50EFJ10' CODPRO, 'TP' CODRCA from dual union all
select '50EFJ10' CODPRO, 'ESPVER' CODRCA from dual union all
select '50EFJ10' CODPRO, 'AGRICU' CODRCA from dual union all
select '50EFJ10' CODPRO, 'INDLEG' CODRCA from dual union all
select '50EFJ10' CODPRO, 'LOGIST' CODRCA from dual),
rn as (
select PRO.CODPRO,RCA.CODRCA,
row_number() over (partition by PRO.CODPRO order by RCA.CODRCA) as rn
from PRO
join RCA on PRO.CODPRO = RCA.CODPRO)
select *
from rn
pivot (max(CODRCA)  CODRCA for (rn) in
(1 as "C1",
 2 as "C2",
 3 as "C3",
 4 as "C4",
 5 as "C5"))

hasil

CODPRO  C1_COD C2_COD C3_COD C4_COD C5_COD
------- ------ ------ ------ ------ ------
400JE   INDLEG LOGIST                     
50EFJ10 AGRICU ESPVER INDLEG LOGIST TP

Jika Anda lebih suka logik pengurutan lainnya sesuaikan sesuai kebutuhan. Juga sesuaikan jika Anda memerlukan nama kolom yang berbeda.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Referensi tabel dalam skema lain yang menghilangkan nama skema

  2. Dapatkan Waktu Lokal Saat Ini dari Setiap Negara di PL/SQL

  3. DBCA Buat Database buruk REMOTE_LISTENER

  4. Bagaimana cara menggabungkan tanpa menggunakan `GROUP BY`?

  5. Bagaimana cara menggunakan %ROWTYPE saat memasukkan ke tabel Oracle dengan kolom identitas?