Ansicht
Dokumentation

ABENCDS_AGGREGATE_FUNCTIONS_V1 - CDS AGGREGATE FUNCTIONS V1

ABENCDS_AGGREGATE_FUNCTIONS_V1 - CDS AGGREGATE FUNCTIONS V1

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

- DDIC-basierte View, aggr_expr

... ... ${ MAX( $[ALL$|DISTINCT$] operand )
    $| MIN( $[ALL$|DISTINCT$] operand )
    $| AVG( $[ALL$|DISTINCT$] operand $[AS dtype$] )
    $| SUM( $[ALL$|DISTINCT$] operand )
    $| COUNT( DISTINCT operand )
    $| COUNT(*) $} ...


Wirkung

Aggregatausdruck in einer SELECT-Anweisung einer . Ein Aggregatausdruck berechnet durch Aufruf einer Aggregatfunktion aus mehreren Zeilen einer Ergebnismenge einen einzelnen Wert aus einem Operand operand. Die Operanden dürfen nicht vom Typ LCHR, LRAW, STRING, RAWSTRING oder GEOM_EWKB sein. Die folgende Tabelle zeigt die möglichen Aggregatfunktionen:

Aggregatfunktion Bedeutung Ergebnistyp
MAX Größter Wert von operand Datentyp von operand
MIN Kleinster Wert von operand Datentyp von operand
AVG Durchschnittswert von operand, der Operand muss numerisch sein. Der Typ INT8 wird nur mit dem Zusatz AS dtype unterstützt. Die Typen DF16_..., DF34_... für dezimale Gleitpunktzahlen werden noch nicht unterstützt. Die Typen DATN, TIMN und UTCL werden auch nicht unterstützt. ,FLTP, plattformabhängiges Zwischenergebnis oder dtype
SUM Summe von operand, der Operand muss numerisch sein. Die Typen DF16_..., DF34_... für dezimale Gleitpunktzahlen werden noch nicht unterstützt. Die Typen DATN, TIMN und UTCL werden auch nicht unterstützt. Datentyp von operand
COUNT Bei Angabe von DISTINCT operand die Anzahl unterschiedlicher Werte von operand und bei Angabe von * die Anzahl der Zeilen der Ergebnismenge. INT4

Bei Verwendung von ALL werden alle Zeilen der Ergebnismenge berücksichtigt (Standardeinstellung). Bei Verwendung von DISTINCT werden nur unterschiedliche Werte von operand berücksichtigt.

Für operand können angegeben werden:

  • ein Feld einer Datenquelle data_source der aktuellen CDS-View
  • eine Fallunterscheidung CASE, die einen Wert zurück gibt

Der Datentyp des Ergebnisses wird bei der Aktivierung der CDS-View festgelegt und richtet sich nach der Aggregatfunktion und nach dem Wertebereich der Datentypen der Operanden. Wenn das Ergebnis der Aggregatfunktion AVG in einer Ergebnismenge zurückgegeben wird, ist der Ergebnistyp FLTP. Als Zwischenergebnis in einer Klausel kann der Ergebnistyp plattformabhängig sein. Mit dem Zusatz AS dtype kann der Ergebnistyp für jede Operandenposition festgelegt werden.

Aggregatausdrücke können als Elemente einer SELECT-Liste verwendet werden, wo sie einen mit AS definierten alternativen Elementnamen benötigen und bedingen die Verwendung einer GROUP BY-Klausel. In einer HAVING-Bedingung können Aggregatausdrücke mit Literalen verglichen werden.

Hinweise

  • Die Namen der Aggregatfunktionen AVG, COUNT, MAX, MIN und SUM sind geschützt und dürfen nicht als selbstdefinierte Namen verwendet werden.
  • Das Ergebnis der Aggregatfunktionen AVG im Datentyp FLTP ist plattformabhängig.
  • Beim Verwenden von count(*) für eine mandantenabhängige Tabelle ohne Einträge wird kein Ergebnis ausgegeben. Erwartet wird das Ergebnis '0', das Ergebnisfeld bleibt jedoch leer (es enthält auch keinen Null-Wert).
Für eine leere mandantenunabhängige Tabelle gibt count(*) wie erwartet '0' aus.

Beispiel

In der SELECT-Liste der CDS-View sales_order berechnen Aggregatausdrücke die Summe, das Minimum und das Maximum der Gesamtbeträge jedes Geschäftspartners und es wird die Anzahl der Aufträge bestimmt. Zu jeder Aggregation ist ein alternativer Elementname definiert. Die nicht aggregierten Felder buyer_guid und currency_code sind in der GROUP BY-Klausel aufgeführt.

@AbapCatalog.sqlViewName: 'SALES_ORDER_VW'
define view sales_order as
  select from snwd_so
  { key buyer_guid,
       @Semantics.currencyCode
        currency_code,
       @Semantics.amount.currencyCode: 'currency_code'
        sum(gross_amount) as sum_gross_amount,
       @Semantics.amount.currencyCode: 'currency_code'
        min(gross_amount) as min_gross_amount,
       @Semantics.amount.currencyCode: 'currency_code'
        max(gross_amount) as max_gross_amount,
       @Semantics.amount.currencyCode: 'currency_code'
        avg(gross_amount) as avg_gross_amount,
        count(*) as sales_orders_count }
  group by buyer_guid, currency_code






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

Length: 12566 Date: 20240523 Time: 163943     sap01-206 ( 132 ms )