Ansicht
Dokumentation
ABENCDS_AGGREGATE_FUNCTIONS_V1 - CDS AGGREGATE FUNCTIONS V1
ABAP Short Reference PERFORM Short ReferenceDiese Dokumentation steht unter dem Copyright der SAP AG.
- 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 Literal
- ein Feld einer Datenquelle data_source der aktuellen CDS-View
- Ein Pfadausdruck, der ein Feld einer Datenquelle data_source bezeichnet
- 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.
- Um eine CDS-View mit Aggregatausdrücken in der SELECT-Liste mit EXTEND VIEW erweitern zu können, müssen mit der Annotation AbapCatalog.viewEnhancementCategory[ ] die Werte #PROJECTION_LIST und #GROUP_BY angegeben 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 )