Stai ricevendo l'output in questo modo semplicemente perché stai emettendo select
dichiarazione contro una tabella (il tuo tbl
tabella) che presumibilmente contiene una colonna (ad esempio la colonna della chiave primaria) che identifica in modo univoco una riga e un pivot
l'operatore prende in considerazione i valori di quella colonna. Ecco un semplice esempio:
/*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
)
Una query su tale tabella ti darà quell'output (output indesiderato) che hai fornito nella domanda:
select A,B
from tbl
pivot(
max(col2) for col1 in ('a' as A,'b' as B)
)
Risultato:
A B
-- --
a1 null
null b1
Per produrre l'output desiderato, è necessario escludere la colonna con valore univoco per una riga:
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)
)
Risultato:
A B
-- --
a1 b1