| 
                           					 
                            
  |  
                        				  
                        
                           					 
                            
  |  
                        				  
                         
                           					 
                             
                              						  |  
                        				  
                        
                           					 
                            
  |  
                        				  
                        
                           					 
                            
  |  
                        				  
                        
                           					 
                            
  |  
                        				  
                        
                           					 
                            
  |  
                        				
                     ||||||||||||||||
| scalar-expression scalar-operator scalar-expression | ||||||||||||||||||||||
This document covers the following topics:
A scalar-expression consists
                  			 of a factor or other scalar
                  			 expressions including scalar operators.
               
Concerning reference priority, scalar expressions behave as follows:
When a non-qualified variable name is specified in a scalar expression, the first approach is to resolve the variable name as column name of the referenced table.
If no column with the specified name is available in the referenced table, Natural tries to resolve this variable as a Natural user-defined variable (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:
A factor can consist of one
                  			 of the items listed in the above diagram and described in the text below.
               
| 
                           						  
                            
  |  
                        						
                         
                           						  
                             
                              							 parameter   |  
                        						
                        
                           						  
                            
  |  
                        					 
                     
 An atom can be either a
                  				parameter
                  				or a constant.
               
| 
                           						  
                            
  |  
                        						
                        
                           						  
                            
  |  
                        						
                        column-name | 
A column-reference is a
                  				column name optionally qualified by either a
                  				table-name
                  				or a correlation-name
                  				(see also the section Basic Syntactical
                     				Items). Qualified names are often clearer than unqualified
                  				names and sometimes they are essential.
               
Note:
 A table name in this context must not be qualified explicitly
                     				with an authorization identifier. Use a correlation name instead if you need a
                     				qualified table name.
                  
If a column is referenced by a
                  				table-name or
                  				correlation-name, it must be contained
                  				in the corresponding table. If neither a
                  				table-name nor a
                  				correlation-name is specified, the
                  				respective column must be in one of the tables specified in the
                  				FROM
                  				clause (see Table
                     				Expression).
               
Common Set Syntax:
| 
                           							 
                            
  |  
                        						  
                        
                           							 
                              							 COUNT  
                         |  
                        						  
                        
                           							 
                            
  |  
                        						  
                        
                           							 
                            
  |  
                        						  
                        ||||
| 
                           							 
                            
  |  
                        						  
                        
                           							 
                            
  |  
                        						  
                        
                           							 
                            
  |  
                        						  
                         
                           							 
                             
                              								(  |  
                        						  
                        
                           							 
                            
  |  
                        						  
                        |||
Extended Set Syntax:
| 
                            
  |  
                        						  
                        
                            
  |  
                        						  
                         
                           							 
                             
                              								  |  
                        						  
                        
                            
  |  
                        						  
                        ( | 
                            
  |  
                        						  
                        
                            
  |  
                        						  
                         
                           							 
                             
                              								  |  
                        						  
                        
                            
  |  
                        						  
                        scalar-expression | 
                            
  |  
                        						  
                        ) | 
                            
  |  
                        						
                     
* |  
                        						
                     ||||||||||||
| 
                            
  |  
                        						  
                        
                            
  |  
                        						  
                        ( | 
                            
  |  
                        						  
                         
                           							 
                             
                              								  |  
                        						  
                        
                            
  |  
                        						  
                        scalar-expression ) | ||||||
| 
                            
  |  
                        						  
                         
                           							 
                             
                              								  |  
                        						  
                        
                            
  |  
                        						  
                        (scalar-expression-1,scalar-expression-2) | |||||||||
SQL provides a number of special functions to enhance its basic retrieval power. The so-called SQL aggregate functions currently available and supported by Natural are:
Apart from COUNT(*), each of these functions operates
                  				on the collection of scalar values in an argument (that is, a single column or
                  				a scalar-expression)
                  				and produces a scalar value as its result.
               
Example:
DEFINE DATA LOCAL 1 AVGAGE (I2) END-DEFINE ... SELECT AVG (AGE) INTO AVGAGE FROM SQL-PERSONNEL ...
In general, the argument can optionally be preceded by the keyword
                  				DISTINCT to eliminate redundant duplicate values before the
                  				function is applied.
               
If DISTINCT is specified, the argument must be the
                  				name of a single column; if DISTINCT is omitted, the argument can
                  				consist of a general scalar-expression.
               
DISTINCT is not allowed with the
                  				special function COUNT(*), which is provided to count all rows
                  				without eliminating any duplicates.
               
ROW CHANGE
                           						  
                         |  
                        						
                        
                           						  
                            
  |  
                        						
                        TIMESTAMP |  
                        						
                        
                           						  
                            
  |  
                        						
                        FOR
                           						  table-designator |  
                        					 
                     
TOKEN |  
                        					 
                     
A ROW CHANGE expression returns a token or a
                  				timestamp that represents the last change to a row.
               
| 
                           						  
                            
  |  
                        						
                         
                           						  
                             
                              							 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 |  
                        					 
                     
Online analytical processing (OLAP) specifications provide the
                  				ability to return ranking, row numbering and aggregation 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.
               
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;
time-zone-specific-expression
 Specifies a timestamp with time zone value:
                  				AT
                        				LOCAL or
                  				AT TIME
                        				ZONE
AT
                     				LOCAL| 
                            
  |  
                        						
                         
                           						  
                             
                              							 function-invocation  |  
                        						
                        
                            
  |  
                        						
                        {AT LOCAL}
                         |  
                        					 
                     |||||
AT TIME
                     				ZONE| 
                            
  |  
                        						
                         
                           						  
                             
                              							 function-invocation  |  
                        						
                        
                            
  |  
                        						
                        {AT TIME ZONE}
                         |  
                        						
                        
                            
  |  
                        						
                         
                           						  
                             
                              							 function-invocation  |  
                        						
                        
                            
  |  
                        					 
                     ||
special-register
A reference to a special register returns a scalar value.
For more information on the special registers that are supported by Natural, see special-register in the section Syntactical Items Common to Natural SQL Statements in the Database Management System Interfaces documentation.
scalar-function
A scalar function is a built-in function that can be used in the construction of scalar computational expressions.
For information on the scalar functions that are supported by Natural, see scalar-function in the section Syntactical Items Common to Natural SQL Statements in the Database Management System Interfaces documentation.
labeled-duration
| scalar-expression | 
                            
  |  
                        						
                         
                           						  
                             
                              							   |  
                        						
                        
                           						  
                            
  |  
                        					 
                     
 A labeled-duration
                  				denotes a specific unit of time as expressed by a number which can be an
                  				expression followed by one of the duration keywords.
               
labeled-duration does not
                  				conform to standard SQL, and is therefore supported by the Natural
                  				SQL Extended Set
                  				only.
               
case-expression
 CASE 
                         |  
                        						
                        
                           						  
                            
  |  
                        						
                        
                           						  
                            
  |  
                        						
                        
                           						  
                            
  |  
                        						
                         ELSE 
                         |  
                        						
                        
                           						  
                            
  |  
                        						
                        
                           						  
                            
  |  
                        						
                        
                           						  
                            
  |  
                        						
                         END 
                         |  
                        					 
                     
 A case-expression does
                  				not conform to standard SQL and is therefore supported by the Natural
                  				SQL Extended Set
                  				only.
               
 WHEN
                           							 search-condition
                           							 THEN 
                         |  
                        						  
                        
                           							 
                            
  |  
                        						  
                        
                           							 
                            
  |  
                        						
                     
A Searched When Clause does not conform to standard SQL and is therefore supported by the Natural SQL Extended Set only.
See details on search-condition.
               
| scalar-expression | 
                           							 
                            
  |  
                        						  
                         WHEN
                           							 
                              							 scalar-expression  THEN 
                         |  
                        						  
                        
                           							 
                            
  |  
                        						  
                        
                           							  |  
                        						
                     
 A Simple WHEN Clause does not conform to standard
                  				  SQL and is therefore supported by the Natural
                  				  SQL Extended Set
                  				  only.
               
cast-expression
CAST
                           						  (scalar-expression
                           						  AS data-type) 
                         |  
                        					 
                     
A CAST expression does not conform to standard SQL
                  				and is therefore supported by the Natural
                  				SQL Extended Set
                  				only.
               
The option
                  				user-defined-function-reference belongs
                  				to the Natural SQL Extended
                     				Set. This option enables you to invoke any user-defined function.
                  				Arguments have to be placed in brackets and separated by commas. The
                  				user-defined function must be declared in the target RDBMS.
               
The option
                  				sequence-reference belongs to the
                  				Natural SQL Extended
                     				Set. 
               
| 
                           						  
                            
  |  
                        						
                         
                           						  
                             
                              							   |  
                        						
                        
This option enables you to reference the next value or the previous value of a sequence object. The sequence object has to be created in the target RDBMS before it could be referenced at runtime.
| (fullselect) | 
The option
                  				scalar-fullselect belongs to the
                  				Natural SQL Extended
                     				Set. 
               
A scalar-fullselect as
                  				supported in an expression is a
                  				fullselect - enclosed in parentheses -
                  				that returns a single row consisting of a single column value. If the
                  				fullselect does not return a row, the
                  				result of the expression is the null value. If more than one row is to be
                  				returned for a scalar-fullselect, an
                  				error occurs.
               
| (scalar-expression,...) | 
A row-value-expression
                  			 returns a single row that consists of one or more column values. The values can
                  			 be specified as a list of expressions. The number of columns that are returned
                  			 by the row-value-expression is equal to
                  			 the number of expressions.
                  			 row-value-expression can be used as an
                  			 operand of several predicates (quantified,
                  			 DISTINCT,
                  			 comparison,
                  			 and IN).