Select group by

Aus SAP-Wiki
Zur Navigation springenZur Suche springen

Siehe Schlüsselbefehl Select.

Mit dem Zusatz "group by" bei einem Select werden Felder mit gleichem Inhalt verdichtet zu einer Zeile, die hinter "group by" aufgeführt sind.

Die Felder hinter "group by" müssen auch im Select aufgeführt sind.

Spalten, die nicht hinter GROUP BY aufgeführt sind, können hinter SELECT nur als Argument einer Aggregatfunktion aufgeführt werden.

Vorteil Nutzung group by

  • die Menge der Datensätze, die bei Verwendung von "group by" zum Applikationsserver geschickt werden, kann erheblich sinken im Vergleich zu der Programmierung über einen ergebnisgrößeren Select und der späteren Verdichtung der Daten über interne Tabellen.
  • Das Coding kann wesentlich kürzer und besser lesbar sein als die spätere Verdichtung über interne Tabellen

Einschränkung Verwendung "group by"

  • Die SAP-Pufferung wird umgangen bei Nutzung von "group by"
  • Bei Pool- und Clustertabellen kann "group by" nicht verwendet werden
  • Die bei "group by" angegebenen Spalten dürfen nicht vom Typ STRING, RAWSTRING, LCHR oder LRAW sein.

Coding

  • SAP hat in seiner Hilfe ein einfaches nachvollziehbares Beispiel aus dem Flugdatenmodell.
  • Das Gruppierungsfeld von der Tabelle SFLIGHT ist hier das Feld "CARRID".
  • Von den Feldern, die verdichtet werden, kann man per "MIN( feld )" und "MAX( feld )" kann man auch den minimalen bzw. maximalen Wert ermitteln.

into itab

Types:
BEGIN OF ty_itab,
  carrid    TYPE sflight-carrid,
  min_price TYPE p DECIMALS 2,
  max_price TYPE p DECIMALS 2,
END OF ty_itab.

Data: lt_itab type STANDARD TABLE OF ty_itab.

SELECT
  carrid,
  MIN( price ),
  MAX( price )
  FROM sflight
  GROUP BY carrid
  into table @lt_itab.

SelectGroupBy1.JPG

into Working-Area

DATA: 
 BEGIN OF wa, 
   carrid  TYPE sflight-carrid, 
   minimum TYPE p DECIMALS 2, 
   maximum TYPE p DECIMALS 2, 
 END OF wa. 

SELECT 
  carrid,
  MIN( price ), 
  MAX( price ) 
  FROM sflight 
  GROUP BY carrid 
  INTO (@wa-carrid, @wa-minimum, @wa-maximum). 
 cl_demo_output=>write_data( wa ). 
ENDSELECT. 

cl_demo_output=>display( ).

Web-Links