Skalar-Ausdrücke

#### Search Results

Search

# Skalar-Ausdrücke

|  | `+` `-` |  |  | factor (scalar-expression) |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
scalar-expression scalar-operator scalar-expression

This Dokument behandelt folgende Themen:

- scalar-expression

- scalar-operator

- factor

- row-value-expression

## scalar-expression

Ein `scalar-expression` besteht aus einem `factor` und anderen `scalar-expressions` einschließlich `scalar-operators`.

Hinsichtlich der Referenzierungspriorität gilt Folgendes:

- Wenn in einer `scalar-expression` ein unqualifizierter Variablenname angegeben wird, wird zunächst angenommen, dass es sich um den Namen einer Spalte der referenzierten Tabelle handelt.

- Falls in der Tabelle eine Spalte dieses Namens nicht vorkommt, behandelt Natural die Variable als Benutzervariable (`host-variable`).

## scalar-operator

| `+` |
`-`
`*`
`/`
`| |`
`CONCAT`

A `scalar-operator` can be any of the operators listed above. The minus (-) and slash (/) operators must be separated by at least one blank from preceding operators.

## factor

Common Set-Syntax:

| atom column-reference aggregate-function special-register |

Extended Set-Syntax:

| atom column-reference aggregate-function olap-specification row-change-expression special-register scalar-function (scalar-expression,) labeled-duration case-expression cast-expression user-defined-function-reference sequence-reference time-zone-specific-expression scalar-fullselect |

Ein `factor` kann eines der obigen Elemente sein, die im Folgenden beschrieben sind.

### atom

| parameter constant |

Ein `atom` kann entweder ein `parameter` oder eine Konstante (`constant`) sein.

### column-reference

| table-name. correlation-name. |  | column-name

Eine `column-reference` ist ein Spaltenname (`column-name`), optional qualifiziert durch einen Tabellennamen (`table-name`) oder einen `correlation-name` (vgl. Abschnitt Grundlegende Syntaxbestandteile). Qualifizierte Namen sind oft klarer als unqualifizierte und manchmal erforderlich.

Anmerkung
Ein `table-name` darf hier nicht explizit mit einem `authorization-identifier` qualifiziert werden. Falls Sie einen qualifizierten `table-name` benötigen, verwenden Sie stattdessen einen `correlation-name`.

Wird eine Spalte mit einem `table-name` oder `correlation-name` referenziert, muss sie in der betreffenden Tabelle enthalten sein. Wird weder `table-name` noch `correlation-name` angegeben, muss die betreffende Spalte in einer der in der `FROM`-Klausel angegebenen Tabellen enthalten sein (siehe table-expression).

### aggregate-function

Common Set-Syntax:

| `COUNT` |  | (*) (`DISTINCT` column-reference) |  |
| `AVG` `MAX` `MIN` `SUM` |  |  | (`DISTINCT` column-reference) ([`ALL`] scalar-expression) |  |

Extended Set-Syntax:

|  | `COUNT` `COUNT-BIG` |  | ( |  |  | `ALL` `DISTINCT` |  | scalar-expression |  | ) |
`*`
| `AVG` `MAX` `MIN` `SUM` `STDDEV` `STDDEV_SAMP` `VARIANCE` `VARIANCE_SAMP` |  | ( |  | `ALL` `DISTINCT` |  | scalar-expression )
| `CORRELATION` `COVARIANCE` `COVARIANCE_SAMP` |  | (scalar-expression-1,scalar-expression-2)

SQL bietet eine Anzahl spezieller Funktionen zur Erweiterung der grundlegenden Such-Möglichkeiten. Folgende sogenannte SQL `aggregate-functions` sind verfügbar und werden von Natural unterstützt:

`AVG` | gibt den Durchschnitt der Werte einer Spalte zurück.
`COUNT` | gibt die Anzahl der Werte einer Spalte zurück.
`MAX` | gibt den größten Wert einer Spalte zurück.
`MIN` | gibt den kleinsten Wert einer Spalte zurück.
`SUM` | gibt die Summe der Werte einer Spalte zurück.

Bis auf `COUNT(*)` sammelt jede dieser Funktionen die Skalarwerte in einem Argument, d.h. einer einzelnen Spalte oder einer `scalar-expression`, und gibt als Ergebnis einen Skalarwert zurück.

Beispiel:

    DEFINE DATA LOCAL
    1 AVGAGE   (I2)
    END-DEFINE
    ...
    SELECT AVG (AGE)
      INTO AVGAGE
      FROM SQL-PERSONNEL
      ...

#### DISTINCT

Im allgemeinen kann dem Argument optional das Schlüsselwort `DISTINCT` vorangestellt werden, um doppelte Werte zu eliminieren, bevor die Funktion ausgeführt wird.

Wenn Sie `DISTINCT` angeben, muss das Argument der Name einer einzelnen Spalte sein; wenn Sie `DISTINCT` nicht angeben, kann das Argument ein allgemeiner `scalar-expression` sein.

`DISTINCT` ist nicht erlaubt bei der Funktion `COUNT(*)`, mit der alle Zeilen in einer Tabelle ohne Eliminierung doppelt vorkommender Zeilen gezählt werden.

### ROW CHANGE-expression

`ROW CHANGE` |  | `TIMESTAMP` |  | `FOR` table-designator
`TOKEN`

Ein `ROW CHANGE`-Ausdruck liefert eine Zeichenfolge (Token) oder einen Zeitstempel, das bzw. der für die letzte Änderung an einer Zeile steht.

`TIMESTAMP` | Gibt an, dass ein Zeitstempel zurückgegeben wird, der für die letztmalige Änderung an einer Zeile steht.
`TOKEN` | Gibt an, dass einen Zeichenfolge (Token) des Typs `BIGINT` zurückgegeben wird, das für einen relativen Punkt in der Änderungsabfolge einer Zeile steht.
`FOR table-designator` | Bezeichnet die Tabelle, in welcher der Ausdruck referenziert wird. `table-designator` muss ein gültiges Natural SQL DDM sein.

### OLAP-specification

Für die folgenden Klauseln des `OLAP-expression` ist der IBM Db2 Analytics Accelerator for z/OS erforderlich:

`CUME_DIST`
`PERCENT_RANK`
`NTILE`
`LAG`
`LEAD`
`FIRST_VALUE`
`LAST_VALUE`
`NTH_VALUE`
`RATIO_TO_REPORT`

| ordered-OLAP-specification numbering-specification aggregation-specification |

#### ordered-OLAP-specification

| `CUME_DIST` ( ) |  | `OVER` ([window-partition-clause] window-order-clause)
`PERCENT_RANK` ( )
`RANK` ( )
`DENSE_RANK` ( )
`NTILE` (num-tile)
lag-function
lead-function

#### lag-function

`LAG` ( expression [ , offset [ , default [ , |  | `'RESPECT NULLS'` |  | `] ] ] )`
`'IGNORE NULLS'`

#### lead-function

`LEAD` ( expression [ , offset [ , default [ , |  | `'RESPECT NULLS'` |  | `] ] ] )`
`'IGNORE NULLS'`

#### numbering-specification

`ROW_NUMBER` `( ) OVER` ([window-partition-clause] [window-order-clause])

#### aggregation-specification

| aggregate-function |  | `OVER` ( [window-partition-clause])
OLAP-column-function
| `RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING` |
window-order-clause |  | `RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING` window-aggregation-group-clause |

#### aggregate-function

| AVG function |
CORRELATION function
COUNT function
COUNT_BIG function
COVARIANCE function
MAX function
MIN function
STDDEV function
SUM function
VARIANCE function

#### OLAP-column-function

| first-value-function |
last-value-function
nth-value-function
ratio-to-report-function

#### first-value-function

`FIRST_VALUE ( expression [ ,` |  | `'RESPECT NULLS'` |  | `] )`
`'IGNORE NULLS'`

#### last-value-function

`LAST_VALUE ( expression [ ,` |  | `'RESPECT NULLS'` |  | `] )`
`'IGNORE NULLS'`

#### nth-value-function

`NTH_VALUE` ( expression | `, nth-row )`

#### ratio-to-report-function

`RATIO_TO_REPORT` ( expression )

#### window-aggregation-group-clause

| `ROWS` `RANGE` |  |  | group-start group-between group-end |

#### group-start

| `UNBOUNDED PRECEDING` unsigned-constant `PRECEDING` `CURRENT ROW` |

#### group-between

`BETWEEN` group-bound-1 `AND` group-bound-2

#### group-bound-1

| `UNBOUNDED PRECEDING` unsigned-constant `PRECEDING` unsigned-constant `FOLLOWING` `CURRENT ROW` |

#### group-bound-2

| `UNBOUNDED FOLLOWING` unsigned-constant `PRECEDING` unsigned-constant `FOLLOWING` `CURRENT ROW` |

#### group-end

| `UNBOUNDED FOLLOWING` unsigned-constant `FOLLOWING` |

#### window-partition-clause

`PARTITION BY` partitioning-expression,...

#### window-order-clause

`ORDER BY` {sort-key-expression |  |  | `ASC` |  |  | },...
`NULLS LAST`
`ASC NULLS FIRST`
`DESC`
`DESC NULLS FIRST`
`DESC NULLS LAST`

OLAP-Angaben (Online Analytical Processing) bieten die Möglichkeit, im Ergebnis einer Abfrage Informationen zur Rangfolge, Zeilennummerierung und Aggregation als Skalarwert zurückzugeben. Eine OLAP-Angabe kann enthalten sein in einem Ausdruck, in einer `select-list` oder in der `ORDER BY`-Klausel eines `SELECT`-Statements. Das Abfrageergebnis, auf das die OLAP-Angaben angewendet werden, ist die Ergebnistabelle der innersten Unterauswahl (`subselect`), in der die OLAP-Angaben enthalten sind.

`RANK` | Gibt an, dass der Rang einer Zeile definiert ist als 1 plus Anzahl der Zeilen, die der Zeile unmittelbar vorangehen.
`DENSE_RANK` | Gibt an, dass der Rang einer Zeile definiert ist als 1 plus Anzahl der vorangehenden Zeilen, die sich hinsichtlich der Reihenfolge unterscheiden.
`ROW_NUMBER` | Gibt an, dass Zeilenfolgenummer für die Zeile berechnet wird, die durch die Reihenfolge definiert ist, wobei mit der 1 für die erste Zeile begonnen wird.
`PARTITION BY` | Definiert die Partition, in der die OAP-Operation angewendet wird.
`ORDER BY` | Definiert die Reihenfolge von Zeilen innerhalb einer Partition, die zur Bestimmung des Werts der OLAP-Angabe verwendet wird.
`ASC` | Gibt an, dass die `sort-key-expression`-Werte in aufsteigender Reihenfolge verwendet werden.
`DESC` | Gibt an, dass die `sort-key-expression`-Werte in absteigender Reihenfolge verwendet werden.
`NULLS_FIRST` | Gibt an, dass hinsichtlich der Window-Reihenfolge Nullwerte vor allen Werten ungleich Null bei der der Sortierreihenfolge berücksichtigt werden.
`NULLS LAST` | Gibt an, dass hinsichtlich der Window-Reihenfolge Nullwerte nach allen Werten ungleich Null bei der der Sortierreihenfolge berücksichtigt werden.

Beispiel:

Das folgende Beispiel zeigt die Rangordnung der Mitarbeiter, sortiert nach Nachnamen, die ein Gesamtgehalt von mehr als $30,000 haben.

    SELECT EMPNO, LASTNAME, FIRSTNME, SALARY+BONUS AS TOTAL_SALARY,
      RANK() OVER(ORDER BY SALARY+BONUS DESC) AS RANK_SALARY
      FROM DSN8910-EMP WHERE SALARY+BONUS > 30000
      ORDER BY LASTNAME;

### time-zone-specific-expression

`time-zone-specific-expression`

Gibt einen Zeitstempel mit Zeitzonenwert an: `AT LOCAL` oder `AT TIME ZONE`

#### `AT LOCAL`

| function-invocation (expression) constant column-name variable special-register scalar-fullselect case-expression cast-specification |  | {`AT LOCAL`}

#### `AT TIME ZONE`

| function-invocation (expression) constant column-name variable special-register scalar-fullselect case-expression cast-specification |  | {`AT TIME ZONE`} |  | function-invocation (expression) constant column-name variable special-register scalar-fullselect case-expression cast-specification |

### special-register

Eine Referenz auf ein `special-register` gibt einen Skalarwert zurück.

Weitere Informationen zu den von Natural unterstützten speziellen Registern siehe special-register im Abschnitt Gemeinsame syntaktische Elemente für Natural SQL-Statements in der Datenbankmanagementsystem-Schnittstellen-Dokumentation.

### scalar-function

Eine `scalar-function` ist eine eingebaute Funktion, die zur Erstellung skalarer Berechnungsausdrücke benutzt werden kann.

Informationen zu den Skalarfunktionen, die vom Natural SQL Extended Set unterstützt werden, siehe Gemeinsame syntaktische Elemente für Natural SQL-Statements, `scalar-function` in der Natural for Db2-Dokumentation.

### labeled-duration

scalar-expression |  | `YEAR` `YEARS` `MONTH` `MONTHS` `DAY` `DAYS` `HOUR` `HOURS` `MINUTE` `MINUTES` `SECOND` `SECONDS` `MICROSECOND` `MICROSECONDS` |

Eine `labeled-duration` zeigt eine spezifische Zeiteinheit an, die durch eine Zahl ausgedrückt wird, welche ein Ausdruck sein kann, auf den eines der Schlüsselwörter für die Dauer folgt.

`labeled-duration` entspricht nicht dem Standard SQL und wird daher nur vom Natural SQL Extended Set unterstützt.

### case-expression

`CASE` |  | searched-when-clause simple-when-clause |  |  | `ELSE` |  | `NULL` scalar-expression |  |  | `END`

`case-expression` entspricht nicht dem Standard SQL und wird daher nur vom Natural SQL Extended Set unterstützt.

#### WHEN-Klausel mit Suchbedingung

`WHEN` search-condition `THEN` |  | `NULL` scalar-expression |

Eine `WHEN`-Klausel mit Suchbedingung entspricht nicht dem Standard SQL und wird daher nur vom Natural SQL Extended Set unterstützt.

Weitere Informationen siehe `search-condition`.

#### Einfache WHEN-Klausel

scalar-expression |  | `WHEN` scalar-expression `THEN` |  | `NULL` scalar-expression |  |  |

Eine einfache `WHEN`-Klausel entspricht nicht dem Standard SQL und wird daher nur vom Natural SQL Extended Set unterstützt.

### cast-expression

`CAST` (scalar-expression `AS` data-type)

Ein cast-expression entspricht nicht dem Standard SQL und wird daher nur vom Natural SQL Extended Set unterstützt.

### user-defined-function-reference

Die Option `user-defined-function-reference` gehört zum Natural SQL Extended Set. Mit dieser Option können Sie beliebige benutzerdefinierte Funktionen aufrufen. Argumente müssen durch Kommas abgetrennt und in Klammern gesetzt werden. Die benutzerdefinierte Funktion muss in der Ziel-RDBMS deklariert werden.

### sequence-reference

Die Option `sequence-reference` gehört zum Natural SQL Extended Set.

| `NEXT VALUE FOR` sequence-name `PREVIOUS VALUE FOR` sequence-name |

Mit dieser Option können Sie den nachfolgenden oder den vorhergehenden Wert eines Abfolgeobjekts referenzieren. Das Abfolgeobjekt muss in der Ziel-RDBMS erstellt werden, ehe es zur Laufzeit referenziert wird.

### scalar-fullselect

(fullselect)

Die Option `scalar-fullselect` gehört zum Natural SQL Extended Set.

Ein `scalar-fullselect`, der in einem Ausdruck unterstützt wird, ist ein in Klammern stehendes `fullselect`, das eine einzelne, aus einem einzigen Spaltenwert bestehende Zeile zurückgibt. Wenn der `fullselect` keine Zeile zurückgibt, ist das Ergebnis des Ausdrucks der Nullwert. Wenn für einen `scalar-fullselect` mehr als eine Zeile zurückgegeben werden soll, tritt ein Fehler auf.

## row-value-expression

(scalar-expression,...)

Ein `row-value-expression` gibt eine einzelne Zeile zurück, die aus einem oder mehreren Spaltenwerten besteht. Die Werte können in Form einer Liste von Ausdrücken angegeben werden. Die Anzahl der vom `row-value-expression` zurückgegebenen Spalten ist gleich der Anzahl der Ausdrücke. `row-value-expression` kann als Operand bei mehreren `predicates` verwendet werden (`quantified`, `DISTINCT`, `comparison` und `IN`).

### On this page

- scalar-expression
- scalar-operator
- factor
- row-value-expression