Podsumowanie: w tym poradniku dowiesz się, jak używać klauzuli Oracle UNPIVOT
do transpozycji kolumn do wierszy.
Wprowadzenie do klauzuli Oracle UNPIVOT
Klauzula Oracle UNPIVOT
pozwala na transpozycję kolumn do wierszy. Klauzula UNPIVOT
jest odwrotna do klauzuli PIVOT
z tym wyjątkiem, że nie deagreguje danych podczas procesu transpozycji.
Następująca ilustracja przedstawia składnię klauzuli Oracle UNPIVOT
:
W tej składni:
- Klauzula
unpivot_clause
umożliwia określenie nazwy kolumny reprezentującej niepodzielone wartości miary. - Klauzula
unpivot_for_clause
umożliwia określenie nazwy dla każdej kolumny, która będzie przechowywać wartości miary. - Klauzula
unpivot_in_clause
zawiera kolumny przestawne, które nie będą przestawiane.
Klauzula INCLUDE | EXCLUDE NULLS
umożliwia uwzględnienie lub wykluczenie wierszy o wartości zerowej.
- Klauzula
INCLUDE NULLS
instruuje Oracle, aby uwzględniał wiersze o wartości zerowej. - Klauzula
EXCLUDE NULLS
natomiast eliminuje wiersze o wartości zerowej ze zwracanego zbioru wyników.
Domyślnie operacja unpivot wyklucza wiersze null-valued.
Zróbmy kilka przykładów użycia klauzuli Oracle UNPIVOT
, aby lepiej ją zrozumieć.
Ustawianie przykładowej tabeli
Po pierwsze, utwórz nową tabelę o nazwie sale_stats
w celach demonstracyjnych:
Po drugie, wstaw kilka wierszy do tabeli sale_stats
:
Po trzecie, wykonaj zapytanie o dane z tabeli sale_stats
:
Oto dane wyjściowe:
Oracle UNPIVOT examples
Ta instrukcja wykorzystuje klauzulę UNPIVOT
do obrócenia kolumn product_a
, product_b
i product_c
do wierszy:
W tym przykładzie:
Kolumna unpivot_clause
to quantity
, która jest kolumną reprezentującą niepodzielone wartości z kolumn product_a
, product_b
i product_c
.
Klauzula unpivot_for_clause
to FOR product_code
, która jest kolumną przechowującą wartości miary.
Klauzula unpivot_in_clause
to:
, która instruuje Oracle, aby niepodzielone wartości w kolumnach product_a
, product_b
i product_c
.
Następujący rysunek przedstawia dane wyjściowe:
Domyślnie operacja UNPIVOT
wyklucza wiersze o wartościach zerowych, dlatego w danych wyjściowych nie widać żadnych NULL.
Następujący przykład wykorzystuje klauzulę UNPIVOT
do transpozycji wartości w kolumnach product_a
, product_b
i product_c
do wierszy, ale z uwzględnieniem wierszy z wartością null:
Oto dane wyjściowe:
Oracle unpivot multiple columns
Zobaczmy przykład unpivotowania wielu kolumn.
Po pierwsze, upuść i ponownie utwórz tabelę sale_stats
:
Po drugie, wstaw wiersze do tabeli sale_stats
:
Po trzecie, odpytaj dane z tabeli sale_stats
:
Na koniec użyj klauzuli UNPIVOT
, aby przetransponować wartości w kolumnie a_qty
, a_value
, b_qty
i b_value
do wierszy:
Here is the result set:
Ten obrazek ilustruje proces transpozycji:
W tym samouczku dowiedziałeś się, jak używać klauzuli Oracle UNPIVOT
do transponowania kolumn do wierszy.
- Czy ten kurs był pomocny?
- TakNie
.