Du får outputtet sådan, simpelthen fordi du udsteder select
sætning mod en tabel (din tbl
tabel), som formodentlig indeholder en kolonne (f.eks. primær nøglekolonne), som entydigt identificerer en række og pivot
operatøren tager værdierne i den pågældende kolonne i betragtning. Her er et simpelt eksempel:
/*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
)
En forespørgsel mod en sådan tabel vil give dig det output (uønsket output), du har angivet i spørgsmålet:
select A,B
from tbl
pivot(
max(col2) for col1 in ('a' as A,'b' as B)
)
Resultat:
A B
-- --
a1 null
null b1
For at producere det ønskede output skal du ekskludere kolonnen med en unik værdi for en række:
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)
)
Resultat:
A B
-- --
a1 b1