Angenommen, Sie haben eine Tabelle wie folgt:
%Vor%Und angenommen, es ist wie folgt ausgefüllt:
%Vor% Angenommen, ich erstelle einen benutzerdefinierten Typ namens SALE_TYPE
, der ein (PRODUCT_ID, SALE_AMOUNT)
Tupel darstellt:
Angenommen, ich erstelle auch einen benutzerdefinierten Typ namens SALES_TYPE
, der eine TABLE
von SALE_TYPE
darstellt:
Ich möchte die Tabellengruppe EMPLOYEE_SALES
nach EMPLOYEE_ID
abfragen. Für jedes EMPLOYEE_ID
möchte ich ein SALES_TYPE
erstellen, das den Umsatz dieses Angestellten enthält. Laut der Dokumentation würde ich so etwas tun:
Ich erwarte, dass diese Abfrage so etwas ergibt:
%Vor%Gibt es eine Möglichkeit, dieselben Ergebnisse zu erzielen, ohne eine Unterabfrage zu stellen (die echte Abfrage, an der ich gerade arbeite, ist viel komplizierter als dieses erfundene Beispiel)? Zum Beispiel gibt es so etwas wie:
%Vor%Angenommen, Sie haben eine Tabelle wie folgt:
%Vor%Und angenommen, es ist wie folgt ausgefüllt:
%Vor%Angenommen, ich erstelle einen benutzerdefinierten Typ namens %code% , der ein %code% Tupel darstellt:
%Vor%Angenommen, ich erstelle auch einen benutzerdefinierten Typ namens %code% , der eine %code% von %code% darstellt:
%Vor%Ich möchte die Tabellengruppe %code% nach %code% abfragen. Für jedes %code% möchte ich ein %code% erstellen, das den Umsatz dieses Angestellten enthält. Laut der Dokumentation würde ich so etwas tun:
%Vor%Ich erwarte, dass diese Abfrage so etwas ergibt:
%Vor%Gibt es eine Möglichkeit, dieselben Ergebnisse zu erzielen, ohne eine Unterabfrage zu stellen (die echte Abfrage, an der ich gerade arbeite, ist viel komplizierter als dieses erfundene Beispiel)? Zum Beispiel gibt es so etwas wie:
%Vor%In Oracle 10g können Sie den Operator COLLECT wie folgt verwenden:
%Vor%Sie sollten in der Lage sein, eine benutzerdefinierte Aggregatfunktion zu schreiben Aggregatfunktionen, die erstellt wurden, um Strings vor 11.2 und die Funktion LISTAGG zu verketten.
Ich kann zum Beispiel ein EMP_OBJ-Objekt und eine Sammlung dieser Objekte (EMP_TBL) erstellen und eine benutzerdefinierte Aggregatfunktion schreiben, die aus einer einfachen SQL-Anweisung eine EMP_TBL-Sammlung generiert
Erstellen Sie die Basistypen
%Vor%Erstellen Sie den Typ, den wir für die Aggregation verwenden möchten
%Vor%Deklarieren Sie die Aggregatfunktion
%Vor%Und jetzt wird eine einfache GROUP BY mit unserer benutzerdefinierten Aggregatfunktion eine EMP_TBL-Sammlung erzeugen
%Vor%Sie sollten in der Lage sein, eine benutzerdefinierte Aggregatfunktion zu schreiben Aggregatfunktionen, die erstellt wurden, um Strings vor 11.2 und die Funktion LISTAGG zu verketten.
Ich kann zum Beispiel ein EMP_OBJ-Objekt und eine Sammlung dieser Objekte (EMP_TBL) erstellen und eine benutzerdefinierte Aggregatfunktion schreiben, die aus einer einfachen SQL-Anweisung eine EMP_TBL-Sammlung generiert
Erstellen Sie die Basistypen
%Vor%Erstellen Sie den Typ, den wir für die Aggregation verwenden möchten
%Vor%Deklarieren Sie die Aggregatfunktion
%Vor%Und jetzt wird eine einfache GROUP BY mit unserer benutzerdefinierten Aggregatfunktion eine EMP_TBL-Sammlung erzeugen
%Vor%Tags und Links sql oracle collections