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.
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_stats
tabellen:
För det tredje frågar du efter data från sale_stats
tabellen:
Här kommer utdata:
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:
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 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:
Den här bilden illustrerar transponeringsprocessen:
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