|
||||||||||||||||||||||
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
).