sql >> Databáze >  >> RDS >> Oracle

Operátor pivotu Oracle

Takový výstup získáváte jednoduše proto, že vydáváte select příkaz k tabulce (vaše tbl tabulka), která pravděpodobně obsahuje sloupec (například sloupec primárního klíče), který jednoznačně identifikuje řádek a pivot operátor bere v úvahu hodnoty tohoto sloupce. Zde je jednoduchý příklad:

/*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
)

Dotaz na takovou tabulku vám poskytne výstup (nežádoucí výstup), který jste uvedli v otázce:

select A,B 
  from tbl
pivot(
  max(col2) for col1 in ('a' as A,'b' as B)
)

Výsledek:

A    B
--   --
a1   null   
null b1

Chcete-li vytvořit požadovaný výstup, musíte vyloučit sloupec s jedinečnou hodnotou pro řádek:

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)
  )

Výsledek:

A  B
-- --
a1 b1 


  1. JSON_ARRAY_INSERT() – Vložení hodnot do pole JSON v MySQL

  2. Jak mohu ukládat a získávat obrázky z databáze MySQL pomocí PHP?

  3. SQLite - Vložit data

  4. Jak RTRIM_ORACLE() funguje v MariaDB