Oracle
 sql >> Database >  >> RDS >> Oracle

Operatore pivot Oracle

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