Je krijgt zo'n output, simpelweg omdat je select
. uitgeeft statement tegen een tabel (uw tbl
tabel) die vermoedelijk een kolom bevat (bijvoorbeeld kolom met primaire sleutel) die op unieke wijze een rij en pivot
identificeert operator houdt rekening met de waarden van die kolom. Hier is een eenvoudig voorbeeld:
/*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
)
Een query op zo'n tabel geeft je die output (ongewenste output) die je hebt opgegeven in de vraag:
select A,B
from tbl
pivot(
max(col2) for col1 in ('a' as A,'b' as B)
)
Resultaat:
A B
-- --
a1 null
null b1
Om de gewenste uitvoer te produceren, moet u de kolom met een unieke waarde voor een rij uitsluiten:
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)
)
Resultaat:
A B
-- --
a1 b1