|
||||||||||||||||||||||
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 Gemeinsame syntaktische Elemente für Natural SQL-Statements in der Datenbankmanagementsystem-Schnittstellen-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
).