cláusula-order-by

La cláusula ORDER BY especifica una ordenación de las filas de la tabla resultante.

Sintaxis de la cláusula order-by

Leer diagrama de sintaxisOmitir el diagrama de sintaxis visualORDER BY ,clave-clasificaciónASCDESCINPUT SEQUENCEORDER OFdesignador de tabla

clave-clasificación

Leer diagrama de sintaxisOmitir el diagrama de sintaxis visualnombre-columnaenteroclave-de-orden-expresión

Descripción de la cláusula de pedido

Una subselección que contenga una cláusula ORDER BY no puede especificarse en la fullselect más externa de una vista

Si la subselección no está entre paréntesis y no es la fullselect más externa, la ORDER BY cláusula no puede especificarse.

Una ORDER BY cláusula que se especifica en una subselección solo afecta al orden de las filas que devuelve la consulta si la subselección es la fullselect más externa, excepto cuando una subselección anidada incluye una ORDER BY y la fullselect más externa especifica que se debe conservar el orden de las filas (mediante la ORDER OF cláusula de designación de tabla ).

Se pueden especificar varias ORDER BY cláusulas pueden especificarse en la misma subselección si cada cláusula está separada por paréntesis.

INPUT SEQUENCE
Indica que la tabla de resultados refleja el orden de entrada de las filas especificadas en la cláusula VALUES de una instrucción INSERT. El orden de ENTRADA DE SECUENCIA solo puede especificarse cuando se especifica una instrucción INSERT en una cláusula from.
ORDER OF designador-tabla
Especifica que el mismo orden de las filas para la tabla de resultados que se designa por el indicador de tabla debe aplicarse a la tabla de resultados de la subselección (o selección completa) que contiene la especificación ORDER OF. Debe haber una referencia de tabla en la cláusula FROM de la subselect (o fullselect) que especifique esta cláusula y coincida con el designador de tabla.

Para una cláusula ORDER BY en una especificación OLAP, el designador de tabla no debe especificar una función de tabla, una tabla derivada de una colección, una vista materializada, una expresión de tabla anidada que esté materializada, un alias o un sinónimo.

clave-clasificación
Nombre de columna, número entero o expresión de clave de ordenación que especifica el valor que se va a utilizar para ordenar las filas del resultado de la subselección.

Si se identifica una única clave de ordenación, las filas se ordenan según los valores de esa clave de ordenación. Si se identifica más de una clave de ordenación, las filas se ordenan según los valores de la primera clave de ordenación, luego según los valores de la segunda clave de ordenación, y así sucesivamente. Una clave de ordenación no puede ser una expresión LOB o XML.

La tabla de resultados se puede ordenar por una columna con nombre en la lista de selección especificando una clave de ordenación que sea un número entero o el nombre de la columna. La tabla de resultados se puede ordenar por una columna sin nombre en la lista de selección especificando una clave de ordenación que sea un número entero o, en algunos casos, por una expresión de clave de ordenación que coincida con la expresión de la lista de selección.

nombre-columna
Identificador que normalmente identifica una columna de la tabla de resultados. En este caso, el nombre de la columna debe ser el nombre de una columna con nombre en la lista de selección. Si fullselect incluye un operador de conjuntos, el nombre de la columna no puede ser calificado.

Si la consulta es una subconsulta, el nombre de columna también puede identificar un nombre de columna de una tabla, vista o expresión de tabla anidada identificada en la cláusula FROM, incluida una columna que se define como implícitamente oculta. La subselección no debe incluir ninguno de los siguientes:

  • DISTINCTO en la lista de selección
  • Funciones agregadas en la lista de selección
  • GROUP BY, cláusula
entero
Un entero sin signo que debe ser mayor que 0 y no mayor que el número de columnas de la tabla de resultados. El entero n identifica la enésima columna de la tabla de resultados.
expresión-clave-clasificación
Una expresión que no es simplemente un nombre de columna o una constante entera sin signo. La consulta a la que se aplica el orden debe ser una subselección para utilizar esta forma de la clave de ordenación.

La expresión de clave de ordenación no puede incluir una expresión que no sea determinista o una función que esté definida para tener una acción externa, excepto la función incorporada RID y la expresión ROW CHANGE. Cualquier nombre de columna en la expresión debe ajustarse a las reglas descritas en Nombres de columna en claves de ordenación. Si la expresión de la clave de ordenación incluye una función agregada, los argumentos de entrada de dicha función no deben hacer referencia a una columna con nombre en la lista de selección que se derive de una función agregada.

Si se utiliza DISTINCT en la lista de selección de la subselección, la expresión de clave de ordenación debe coincidir con una expresión de la lista de selección de la subselección. Las selecciones completas de escalares nunca coinciden.

Si la subselección está agrupada, la expresión de la clave de ordenación puede estar o no en la lista de selección de la subselección. Cuando la expresión de la clave de ordenación no está en la lista de selección, se aplican las siguientes reglas:

  • Cada expresión en la cláusula ORDER BY debe:
    • Utilizar una o más expresiones de agrupación
    • Utilice un nombre de columna que identifique de forma inequívoca una columna de agrupación de R o que se especifique dentro de una función agregada.
  • Cada expresión en la cláusula ORDER BY no debe contener un fullselect escalar.
ASC
Utiliza los valores de clave-clasificación en orden ascendente.

ASC es el valor predeterminado.

DESC
Utiliza los valores de clave-clasificación en orden descendente.

El pedido se realiza de acuerdo con las reglas de comparación descritas en Elementos de lenguaje en SQL. El valor nulo es superior a cualquier otro valor. Si su especificación de pedido no determina un orden completo, las filas con valores duplicados de la última clave de clasificación identificada tienen un orden arbitrario. Si no especifica ORDER BY, las filas de la tabla de resultados tienen un orden arbitrario.

Los controles de acceso a las columnas no afectan al funcionamiento de la cláusula ORDER BY. El pedido se basa en los valores originales de la columna. Sin embargo, después de aplicar las máscaras de columna, los valores enmascarados en la tabla de resultados finales podrían no reflejar el orden de los valores de columna originales.

Nombres de columna en claves de ordenación : El nombre de una columna en una clave de ordenación debe cumplir las siguientes reglas:

  • Si el nombre de la columna está cualificado, la consulta debe ser una subselección. El nombre de la columna debe identificar sin ambigüedades una columna de una tabla, vista o expresión de tabla anidada en la cláusula FROM de la subselección; su valor se utiliza para calcular el valor de la especificación de ordenación.
  • Si el nombre de la columna no está cualificado y la consulta es una subconsulta :
    • Si el nombre de la columna es idéntico al nombre de más de una columna de la tabla de resultados, el nombre de la columna debe identificar sin ambigüedades una columna de alguna tabla, vista o expresión de tabla anidada en la cláusula FROM de la subselección de ordenación.
    • Si el nombre de la columna es idéntico al de una columna de la tabla de resultados, su valor se utiliza para calcular el valor de la especificación de ordenación.
    • Si el nombre de la columna no es idéntico al de una columna de la tabla de resultados, debe identificar sin ambigüedad una columna de una tabla, vista o expresión de tabla anidada en la cláusula FROM de la subselección. Si el nombre de la columna es idéntico al de una columna de una tabla, vista o expresión de tabla anidada en la cláusula FROM de la subselección, su valor se utiliza para calcular el valor de la especificación de ordenación.