Du får utdata på det sättet helt enkelt för att du utfärdar select
uttalande mot en tabell (din tbl
tabell) som förmodligen innehåller en kolumn (t.ex. primärnyckelkolumn) som unikt identifierar en rad och pivot
operatören tar hänsyn till värdena för den kolumnen. Här är ett enkelt exempel:
/*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 fråga mot en sådan tabell kommer att ge dig den utdata (oönskad utdata) som du angav i frågan:
select A,B
from tbl
pivot(
max(col2) for col1 in ('a' as A,'b' as B)
)
Resultat:
A B
-- --
a1 null
null b1
För att producera önskad utdata måste du exkludera kolumnen med unikt värde för en rad:
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