Ansicht
Dokumentation

ABAPGROUPING_SETS_CLAUSE - GROUPING SETS CLAUSE

ABAPGROUPING_SETS_CLAUSE - GROUPING SETS CLAUSE

PERFORM Short Reference   CPI1466 during Backup  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

SELECT, GROUP BY, grouping_sets

Kurzreferenz



... GROUPING SETS ( ( ${ $}
                    $| ${ sql_exp1, sql_exp2, ... $} ),
                    ( ${ $}
                    $| ${ sql_exp1, sql_exp2, ... $} ), ... ) ...


Wirkung

GROUPING SETS ist ein Zusatz der GROUP BY-Klausel, mit dem sich mehrere Gruppierungsmengen unterhalb einer GROUP BY-Klausel definieren lassen. Die Gruppierungsmengen werden separat aggregiert und in einer Ergebnismenge zusammengeführt.

Der GROUP BY-Zusatz GROUPING SETS besteht aus einer in runden Klammern eingefassten kommaseparierten Liste von Gruppierungsmengen. Jede Gruppierungsmenge wiederum ist selbst eingeklammert und wird wie folgt angegeben:

  • als leere Gruppierungsmenge ( )
Eine leere Gruppierungsmenge stellt die Aggregation über die gesamte Datenquelle hinweg dar. Sie wird beispielsweise genutzt, um eine Gesamtsumme zu berechnen.

  • als kommaseparierte Liste ( sql_exp1, sql_exp2,  ... )
Eine kommaseparierte Liste bestehend aus SQL-Ausdrücken sql_exp1, sql_exp2, ..., welche die Menge an zu aggregierenden Ausdrücken festlegt.

Jede Gruppierungsmenge wird als eigene GROUP BY-Liste betrachtet und wie eine solche ausgewertet. Dabei werden auch die SQL-Ausdrücke sql_exp1, sql_exp2, ... außerhalb der Gruppierungsmenge berücksichtigt. Die beiden folgenden Beispiele sollen dies veranschaulichen:

GROUP BY sql_exp1, GROUPING SETS( ( sql_exp2 ), ( sql_exp3, sql_exp4 ) )

GROUP BY GROUPING SETS( ( sql_exp1, sql_exp2 ), (sql_exp1, sql_exp3, sql_exp4 ) )

Das Ergebnis der beiden GROUP BY-Klauseln ist äquivalent und entspricht zwei per UNION ALL verknüpften SELECT-Anweisungen, wobei die beiden folgenden GROUP BY-Listen verwendet werden:

  1. sql_exp1, sql_exp2
  2. sql_exp1, sql_exp3, sql_exp4

Gegenüber der Zusammenführung per UNION-Klausel hat der Zusatz GROUPING SETS den Vorteil, dass die SELECT-Anweisung nur einmal angegeben werden muss. Potentiell kann die Datenbank eine Anweisung mit dem Zusatz GROUPING SETS auch besser optimieren als das Pendant mit UNION.

Regeln

  • Alle Spalten, die in dem Zusatz GROUPING SETS verwendet sind, müssen in der SELECT-Liste angegeben werden.
  • Die in GROUPING SETS angegebenen Ausdrücke dürfen nicht vom Datentyp LCHR, LRAW, RAWSTRING, STRING oder GEOM_EWKB sein.
  • Die Reihenfolge der Ergebniszeilen und auch SQL-Ausdrücke in der kommaseparierten Liste einer Gruppierungsmenge, ist beliebig und hat keinen Einfluss auf das Ergebnis der Aggregation. Wenn eine bestimmte Sortierung der Ergebnisse der Aggregation benötigt wird, ist dafür die Angabe einer ORDER BY-Klausel nötig. Der ORDER BY- Zusatz PRIMARY KEY ist erlaubt.
  • Die Ausdrücke, die an der Aggregation teilgenommen haben, enthalten in den entsprechenden Ergebnissen die Null-Werte als Platzhalter.

Tipps

Ob eine bestimmte Spalte in der jeweiligen Ergebnismenge aggregiert wurde oder nicht lässt sich mit Hilfe der Gruppierungsfunktion GROUPING herausfinden.

Hinweise

  • Bei der Verwendung des GROUP BY-Zusatzes GROUPING SETS umgeht die Anweisung SELECT die Tabellenpufferung.
  • Wenn Zusatz GROUPING SETS verwendet ist, wird die Syntaxprüfung in einem strikten Modus ausgeführt, welche die SELECT-Anweisung strenger behandelt als die normale Syntaxprüfung.
  • Gruppierungsmengen werden nicht von allen Datenbanken unterstützt. Mit der Methode USE_FEATURES der Klasse CL_ABAP_DBFEATURES kann in einem ABAP-Programm festgestellt werden, ob das aktuelle Datenbanksystem oder ein Datenbanksystem, auf das über eine Sekundärverbindung zugegriffen wird, den Zugriff auf Gruppierungsmengen unterstützt. Hierzu muss die Konstante GROUPING_SETS dieser Klasse in einer internen Tabelle an die Methode übergeben werden.

Beispiel

Das folgende Beispiel berechnet für Flüge der Lufthansa die Summe der maximal verfügbaren Sitzplätze in Abhängigkeit des Flugzeugtyps und der Flugverbindung (Spalten planetype und connid). Dazu werden zwei Gruppierungsmengen definiert, die entweder den Flugzeugtyp oder die Flugverbindung enthalten.

Siehe SELECT, Gruppierungsmengen






ABAP Short Reference   ABAP Short Reference  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 6971 Date: 20240329 Time: 144257     sap01-206 ( 95 ms )