Oracle UNPIVOT

Sammanfattning: I den här handledningen lär du dig hur du använder Oracle UNPIVOT-klausulen för att överföra kolumner till rader.

Introduktion till Oracle UNPIVOT-klausulen

Oracle UNPIVOT-klausulen gör att du kan överföra kolumner till rader. UNPIVOT-klausulen är motsatsen till PIVOT-klausulen förutom att den inte avaggregerar data under transponeringsprocessen.

Oracle UNPIVOT

Nedan visas syntaxen för Oracle UNPIVOT-klausulen:

I den här syntaxen:

  • Med unpivot_clause kan du ange ett namn på en kolumn som representerar de icke-pivoterade måttvärdena.
  • Med unpivot_for_clause kan du ange namnet för varje kolumn som kommer att innehålla mätvärdena.
  • Med unpivot_in_clause kan du ange de pivoterade kolumnerna som inte kommer att vara pivoterade.

Med INCLUDE | EXCLUDE NULLS-klausulen kan du inkludera eller exkludera rader med nollvärden.

  • Klausulen INCLUDE NULLS instruerar Oracle att inkludera nollvärderade rader.
  • Klausulen EXCLUDE NULLS eliminerar å andra sidan nollvärderade rader från den returnerade resultatuppsättningen.

Som standard utesluter unpivot-operationen noll-värderade rader.

Låt oss ta några exempel på hur Oracle använder UNPIVOT-klausulen för att få en bättre förståelse.

Sätt upp en exempeltabell

För det första skapar du en ny tabell som heter sale_stats för demonstration:

För det andra lägger du in några rader i sale_statstabellen:

För det tredje frågar du efter data från sale_statstabellen:

Här kommer utdata:

oracle unpivot - exempeltabell

Oracle UNPIVOT exempel

Detta uttalande använder UNPIVOT-klausulen för att rotera kolumnerna product_a, product_b och product_c till rader:

I det här exemplet:

unpivot_clause är quantity, vilket är en kolumn som representerar de icke-pivoterade värdena från kolumnerna product_a, product_b och product_c.

Den unpivot_for_clause är FOR product_code som är den kolumn som kommer att innehålla åtgärdens värden.

Den unpivot_in_clause klausulen är:

som instruerar Oracle att avpivotera värdena i kolumnerna product_a, product_b och product_c.

Följande bild visar utdata:

oracle unpivot - example

Som standard utesluter UNPIVOT-operationen noll-värderade rader, därför ser du ingen NULL i utdata.

I följande exempel används UNPIVOT-klausulen för att transponera värden i kolumnerna product_a, product_b och product_c till rader, men inklusive noll-värderade rader:

Här är resultatet:

oracle unpivot include nulls example

Oracle unpivot multiple columns

Vi ska se ett exempel på att unpivota flera kolumner.

För det första släpper och återskapar du tabellen sale_stats:

För det andra lägger du in rader i tabellen sale_stats:

För det tredje frågar du efter data från tabellen sale_stats:

Till sist använder du UNPIVOT-klausulen för att överföra värdena i kolumnerna a_qty, a_value, b_qty och b_value till rader:

Här är resultatuppsättningen:

oracle unpivot multiple columns example

Den här bilden illustrerar transponeringsprocessen:

Oracle unpivot multiple columns

I den här handledningen har du lärt dig hur du kan använda Oracle UNPIVOT-klausulen för att överföra kolumner till rader.

  • Har den här handledningen varit till hjälp?
  • JaNej

Lämna ett svar

Din e-postadress kommer inte publiceras.