Sie erhalten die Ausgabe einfach deshalb, weil Sie select
ausgeben -Anweisung gegen eine Tabelle (Ihre tbl
Tabelle), die vermutlich eine Spalte (z. B. Primärschlüsselspalte) enthält, die eine Zeile und einen pivot
eindeutig identifiziert Operator berücksichtigt Werte dieser Spalte. Hier ist ein einfaches Beispiel:
/*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
)
Eine Abfrage einer solchen Tabelle gibt Ihnen die Ausgabe (unerwünschte Ausgabe), die Sie in der Frage angegeben haben:
select A,B
from tbl
pivot(
max(col2) for col1 in ('a' as A,'b' as B)
)
Ergebnis:
A B
-- --
a1 null
null b1
Um die gewünschte Ausgabe zu erzeugen, müssen Sie die Spalte mit eindeutigem Wert für eine Zeile ausschließen:
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)
)
Ergebnis:
A B
-- --
a1 b1