sql >> Databasteknik >  >> RDS >> Oracle

Oracle pivotoperatör

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 


  1. få tillgång till ett kolumnalias i where-satsen i postgresql

  2. Använder EXCEPT-satsen i PostgreSQL

  3. Ge tabellnivåbehörigheter i SQL Server

  4. Hur kan jag schemalägga ett jobb för att köra en SQL-fråga dagligen?