Wat u zoekt is een eenvoudige PIVOT
functie.
Het enige verschil is dat je niet wilt pivot
in de kolom waarde , maar mogelijk op de zoekwoordvolgorde .
Hier de zoekopdracht om te draaien op de alfabetische volgorde van de zoekwoorden.
Merk op dat de eerste twee subquery's alleen de vereenvoudigde gegevens opleveren als volgt:
CODPRO CODRCA
------- ------
400JE LOGIST
400JE INDLEG
50EFJ10 TP
50EFJ10 ESPVER
50EFJ10 AGRICU
50EFJ10 INDLEG
50EFJ10 LOGIST
Query berekent eerst het rijnummer in de volgorde van de CODRCA
en de pivot
erop:
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"))
resultaat
CODPRO C1_COD C2_COD C3_COD C4_COD C5_COD
------- ------ ------ ------ ------ ------
400JE INDLEG LOGIST
50EFJ10 AGRICU ESPVER INDLEG LOGIST TP
Als u de voorkeur geeft aan een andere sorteerlogica pas indien nodig aan. Pas ook aan als u andere kolomnamen nodig heeft.