Version 4.2.6
 —  Statements  —

Skalar-Ausdrücke

 

+

factor

 

  - (scalar-expression)  
scalar-expression     scalar-operator scalar-expression

Dieses Dokument behandelt folgende Themen:


scalar-expression

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

In punkto Referenzierungspriorität gilt folgendes:

Seitenanfang

scalar-operator

+

-
*
/
| |
CONCAT

Ein scalar-operator kann einer der oben aufgeführten Operatoren sein, wobei vor und nach den Operatoren − und / jeweils mindestens ein Leerzeichen stehen muss.

Seitenanfang

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,)
scalar-expression unit
case-expression
cast-expression
user-defined-function-reference
sequence-reference

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; vgl. Abschnitt Grundlegende Syntaxbestandteile.

column-reference

table-name .

column-name
correlation-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

(DISTINCT column-reference)

 
MIN ([ALL] scalar-expression)  
SUM        

Extended Set-Syntax:

COUNT

(*)

(DISTINCT column-reference)

AVG

     
MAX      
MIN  
SUM      
COUNT_BIG      
STDDEV      
STDDEV_POP

(DISTINCT column-reference)

STDDEV_SAMP ([ALL] scalar-expression)
VAR      
VAR_POP      
VAR_SAMP      
VARIANCE      
VARIANCE_SAMP      

SQL bietet eine Reihe 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 
  ...

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 eine allgemeine scalar-expression sein.

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

ROW CHANGE Expression

ROW CHANGE

TIMESTAMP

FOR table-designator
TOKEN

A ROW CHANGE expression retuns a token or a timestamp that represents the last change to a row.

TIMESTAMP Specifies a timestamp is returned that represents the last time when a row was changed.
TOKEN Specifies a token of type BIGINT is returned that represents a relative point in the modification sequence of a row.
FOR table-designator Identifies the table in which the expression is referenced. table-designator has to be a valid Natural SQL DDM.

OLAP Specification

ordered-OLAP-specification

numbering-specification

ordered-OLAP-specification

RANK

( ) OVER ([window-partition-clause] window-order-clause)
DENSE_RANK

numbering-specification

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

window-partition-clause

PARTITION BY partitioning-expression,...

window-order-clause

ORDER BY {sort-key-expression

ASC

},...
NULLS LAST
ASC NULLS FIRST
DESC
NULLS FIRST
DESC NULLS LAST

Online analytical processing (OLAP) specifications provide the ability to return ranking and row numbering information as a scalar value in the result of a query. An OLAP specification can be included in an expression, in a select-list, or in the ORDER BY clause of a SELECT statement. The query result to which the OLAP specifications are applied is the result table of the innermost subselect that includes the OLAP specifications.

RANK Specifies that the rank of a row is defined as 1 plus the number of rows that strictly precede the row.
DENSE_RANK Specifies that the rank of a row is defined as 1 plus the number of preceding rows that are distinct with respect to the ordering.
ROW_NUMBER Specifies that a sequential row number is computed for the row that is defined by the ordering, starting with 1 for the first row.
PARTITION BY Defines the partition within which the OLAP operation is applied.
ORDER BY Defines the ordering of rows within a partition that is used to determine the value of the OLAP specification.
ASC Specifies that the values of sort-key-expression are used in ascending order.
DESC Specifies that the values of sort-key-expression are used in descending order.
NULLS_FIRST Specifies that the window ordering considers null values before all non-null values in the sort order.
NULLS LAST Specifies that the window ordering considers null values after all non-null values in the sort order.

Example:

Display the ranking of employees that have a total salary of more than $30,000, in order by last name.

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;

special-register

Common Set-Syntax:

USER

Extended Set-Syntax:

USER

CURRENT TIMEZONE
CURRENT DATE
CURRENT TIME
CURRENT TIMESTAMP
CURRENT SQLID
CURRENT PACKAGESET
CURRENT SERVER

Bei der Referenzierung eines special-registers erhält man einen Skalarwert.

special-register sind — mit Ausnahme von USER — nicht Teil der Standard-SQL und werden daher nur als Teil des Natural SQL Extended Set unterstützt.

scalar-function

scalar-functions sind eingebaute, bei der Konstruktion von Skalar-Berechnungen verwendbare Funktionen.

Informationen zu scalar-functions, die vom Natural SQL Extended Set unterstützt werden, finden Sie im Abschnitt Natural SQL Statements − Syntactical Items, scalar-function in der Natural for DB2-Dokumentation.

scalar-expression-unit

YEAR

YEARS
MONTH
MONTHS
DAY
DAYS
HOUR
HOURS
MINUTE
MINUTES
SECOND
SECONDS
MICROSECOND
MICROSECONDS

Units sind nicht Teil der Standard-SQL und werden daher nur als Teil des Natural SQL Extended Set unterstützt.

case-expression

CASE

searched-when-clause

ELSE

NULL

END
simple-when-clause scalar-expression

Case-expressions sind nicht Teil der Standard-SQL und werden daher nur als Teil des Natural SQL Extended Set unterstützt.

searched-when-clause

WHEN search-condition THEN

NULL

scalar-expression

Eine searched-when-clause ist nicht Teil der Standard-SQL und wird daher nur als Teil des Natural SQL Extended Set unterstützt.

Näheres zu search-condition siehe search-condition.

simple-when-clause

scalar-expression

WHEN scalar-expression THEN

NULL
scalar-expression

Eine simple-when-clause ist nicht Teil der Standard-SQL und wird daher nur als Teil des Natural SQL Extended Set unterstützt.

cast-expression

CAST (scalar-expression AS data-type)
 

Cast-expressions sind nicht Teil der Standard-SQL und werden daher nur als Teil des Natural SQL Extended Set unterstützt.

user-defined-function-reference

Die Option user-defined-function-reference gehört zum Natural SQL Extended Set.

Diese Option ermöglicht Ihnen den Aufruf einer beliebigen benutzerdefinierten Funktion. Argumente müssen in Klammern gesetzt werden und durch Kommas voneinander getrennt werden. Die benutzerdefinierte Funktion muss in der Ziel-RDBMS deklariert werden.

sequence-reference

NEXT VALUE FOR sequence-name
PREVIOUS VALUE FOR sequence-name

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

Diese Option ermöglicht es Ihnen, den nächsten Wert oder den vorherigen Wert eines Sequence Object zu referenzieren. Das Sequence Object muss im Ziel-RDBMS generiert werden, bevor es zur Laufzeit referenziert werden kann.

scalar-fullselect

(fullselect)

Die Option user-defined-function-reference gehört zum Natural SQL Extended Set.

Ein in einem Ausdruck unterstütztes scalar-fullselect ist ein in Klammern stehendes fullselect, das eine einzelne Reihe zurückgibt, die aus einem einzelnen Spaltenwert besteht. Wenn das fullselect keine Reihe zurückgibt, ist das Ergebnis des Ausdrucks der Nullwert. Wenn mehr als eine Reihe für ein scalar-fullselect zurückgegeben werden soll, tritt ein Fehler auf.

Seitenanfang