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.