|
|
|
|
|
|
|
|
||||||||||||||||
| scalar-expression scalar-operator scalar-expression | ||||||||||||||||||||||
This Dokument behandelt folgende Themen:
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).
|
|
+
|
|
-
|
||
*
|
||
/
|
||
| |
|
||
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.
Common Set-Syntax:
|
|
|
Extended Set-Syntax:
Ein factor kann eines der obigen
Elemente sein, die im Folgenden beschrieben sind.
|
|
parameter |
|
Ein atom kann entweder ein
parameter oder eine Konstante
(constant) sein.
|
|
|
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).
Common Set-Syntax:
|
|
COUNT
|
|
|
||||
|
|
|
|
( |
|
|||
Extended Set-Syntax:
|
|
|
|
|
( |
|
|
|
|
scalar-expression |
|
) |
|
* |
||||||||||||
|
|
|
( |
|
|
|
scalar-expression ) | ||||||
|
|
|
|
(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:
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 ...
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
|
|
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.
|
|
ordered-OLAP-specification |
|
|
|
RANK |
|
( ) OVER ([window-partition-clause]
window-order-clause)
|
|
DENSE_RANK |
||||
ROW_NUMBER ( )
OVER ([window-partition-clause]
[window-order-clause])
|
aggregate-function
OVER ( [window-partition-clause])
|
|||||
|
|
RANGE
BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING |
|
|||
| window-order-clause |
|
|
|
||
|
|
AVG function |
|
| CORRELATION function | ||
| COUNT function | ||
| COUNT_BIG function | ||
| COVARIANCE function | ||
| MAX function | ||
| MIN function | ||
| STDDEV function | ||
| SUM function | ||
| VARIANCE function |
|
|
|
|
|
|
|
|
|
|
BETWEEN
group-bound-1
AND
group-bound-2 |
|
|
|
|
|
|
|
|
|
|
|
|
PARTITION BY
partitioning-expression,...
|
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.
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
Gibt einen Zeitstempel mit Zeitzonenwert an:
AT
LOCAL oder
AT TIME
ZONE
AT
LOCAL|
|
function-invocation |
|
{AT
LOCAL}
|
|||||
AT TIME
ZONE|
|
function-invocation |
|
{AT
TIME ZONE}
|
|
function-invocation |
|
||
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 Syntactical Items Common to Natural SQL Statements in der Database Management System Interfaces-Dokumentation.
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 Syntactical Items Common to Natural SQL
Statements,
scalar-function
in der Natural for DB2-Dokumentation.
| scalar-expression |
|
|
|
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
|
|
|
|
ELSE
|
|
|
|
END
|
case-expression entspricht
nicht dem Standard SQL und wird daher nur vom Natural
SQL Extended Set
unterstützt.
WHEN
search-condition
THEN
|
|
|
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.
| scalar-expression |
|
WHEN
scalar-expression THEN
|
|
|
Eine einfache WHEN-Klausel entspricht nicht dem Standard
SQL und wird daher nur vom Natural SQL Extended Set unterstützt.
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.
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.
Die Option sequence-reference
gehört zum Natural SQL Extended
Set.
|
|
|
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.
| (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 für einen
scalar-fullselect mehr als eine Zeile
zurückgegeben werden soll, tritt ein Fehler auf.
| (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).