Ten post obejmuje koncepcję obrotu na serwerze Oracle za pomocą klauzuli obrotowej. Ta klauzula pozwala zmienić rzędy tabeli w kolumny. Zapewnia to, że możesz uzyskać wyniki z danego zapytania w formacie Crosstab.
Wprowadzenie do obrotu Oracle
Domyślnie relacyjne bazy danych przechowują informacje w formacie tabelarycznym w parach kolumnowych. Jednak w niektórych przypadkach możesz chcieć odwrócić układ i formatowanie danych, aby przedstawić inny rodzaj informacji.
Tutaj pojawia się obrót. Wprowadzona w Oracle 11c klauzula Pivot może przyjąć dany format tabelary. Może to następnie przekonwertować wiersze na kolumny.
Składnia zapytania
Poniżej znajduje się prosta składnia, która pokazuje użycie klauzuli obrotowej w bazie danych Oracle.
Wybierz kolumn_list
Z nazwy Table_name
Pivot [xml] (
Pivot_Expression
PIVOT_FOR_Expression
Pivot_in_Expression
);
Powyższa składnia zawiera następujące elementy:
- kolumn_list - określa to kolumnę, którą chcesz wybrać z dostarczonej tabeli.
- Pivot_Expression - określa to kolumny, które chcesz agregować. Wykonuje to niejawną grupę według operacji opartej na kolumnach nie określonych w wyrażeniu i kolumnach zdefiniowanych w parametrze PIVOT_IN_IND.
- PIVOT_FOR_Expression -To opisuje kolumnę, którą chcemy grupować lub obracać się.
- Pivot_in_Expression - to definiuje kolumny filtra dla Pivot_Ffor_Expression.
Spójrzmy na przykład obrotu tabeli Oracle.
Oracle obrotowa przykładowa ilustracja
Załóżmy, że mamy informacje o tabeli zamówień, jak pokazano w poniższych zapytaniach:
rozkazywalne rozkazy
(
IdnumberNotNull,
Klient Varchar2 (50) Notnull,
order_datedate,
produkt_idnumber,
Numer ilości,
Numer ceny,
Constraintorder_pk Key podstawowy (id)
);
Wstaw do zamówień (id, klient, zamówienie, produkt_id, ilość, cena)
Wartości (1, „Beatriz”, data „2022-10-10”, 4500, 45, 56);
Wstaw do zamówień (id, klient, zamówienie, produkt_id, ilość, cena)
Wartości (2, „Ali”, data „2022-10-10”, 5400, 65, 109);
Wstaw do zamówień (id, klient, zamówienie, produkt_id, ilość, cena)
Wartości (3, „Gabriel”, data „2022-10-11”, 6400, 405, 586);
Wstaw do zamówień (id, klient, zamówienie, produkt_id, ilość, cena)
Wartości (4, „Beatriz”, data „2022-10-11”, 5800, 55, 550);
Wstaw do zamówień (id, klient, zamówienie, produkt_id, ilość, cena)
Wartości (5, „Beatriz”, data „2022-10-12”, 4506, 46, 700);
Wstaw do zamówień (id, klient, zamówienie, produkt_id, ilość, cena)
Wartości (6, „Gabriel”, data „2022-10-11”, 9001, 450, 5600);
Tabela wyjściowa:
Przykład
Poniższy przykład wykorzystuje klauzulę PIVOT w celu uzyskania informacji o kliencie i zakupionego produktu.
WYBIERZ SPOŚRÓD
(
Wybierz klienta, produkt_id z zamówień
)
sworzeń
(
Count (produkt_id)
Dla produktu_id w (4500, 6400, 5800, 4506, 9001)
)
Zamówienie przez klienta;
Przykładową tabelą jest jak pokazano:
Przykład 2 - aliasingowe kolumny
Aliasing Columns Przykład:
WYBIERZ SPOŚRÓD
(
Wybierz klienta, produkt_id z zamówień
)
sworzeń
(
Count (produkt_id)
Dla produktu_id w („T-shirts” 4500, „Cooler Case” 6400, „Audio Mic” 5800, „Android Telefon” 4506, „Zakrzywiony monitor” 9001)
)
Zamówienie przez klienta;
Wniosek
W tym artykule obejmuje podstawy pracy z poleceniem PIVOT w bazach danych Oracle.