Una cláusula ORDER BY

La cláusula ORDER BY es un elemento opcional de lo siguiente:

    Una instrucción SELECT
    Una SelectExpression
    Una expresión de VALORES
    Una ScalarSubquery
    A TableSubquery

También se puede usar en una instrucción INSERT o en una instrucción CREATE VIEW .

Una cláusula ORDER BY le permite especificar el orden en que aparecen las filas en el conjunto de resultados. En las subconsultas, la cláusula ORDER BY no tiene sentido a menos que vaya acompañada de una o ambas correcciones de resultado y captación de primeras cláusulas o junto con la función ROW_NUMBER , ya que no hay garantía de que la orden se conserve en el conjunto de resultados externo. Se permite combinar ORDER BY en la consulta externa con ORDER BY en las subconsultas.

Sintaxis

  ORDER BY { column-Name |  ColumnPosition |  Expresión
      [ASC |  DESC]
      [NULLS PRIMERO |  NULLS LAST]
      [, columna-Nombre |  ColumnPosition |  Expresión 
      [ASC |  DESC]
      [NULLS PRIMERO |  NULLS LAST]
      ] *

columna-Nombre
    Hace referencia a los nombres visibles de SelectItems en la consulta subyacente de la instrucción SELECT . El nombre de columna que especifique en la cláusula ORDER BY no necesita ser la lista SELECT.
ColumnPosition
    Un número entero que identifica el número de la columna en SelectItems en la consulta subyacente de la instrucción SELECT . ColumnPosition debe ser mayor que 0 y no mayor que el número de columnas en la tabla de resultados. En otras palabras, si desea ordenar por una columna, esa columna debe especificarse en la lista SELECCIONAR.
Expresión
    Una expresión de clave de clasificación, como expresiones numéricas, de cadena y de fecha y hora. La expresión también puede ser una expresión de valor de fila, como una subconsulta escalar o una expresión de caso.
ASC
    Especifica que los resultados se deben devolver en orden ascendente. Si la orden no se especifica, ASC es el valor predeterminado.
DESC
    Especifica que los resultados se deben devolver en orden descendente.
NULLS FIRST
    Especifica que los valores NULL deben devolverse antes que los valores no NULL.
NULLS LAST
    Especifica que los valores NULL deben devolverse después de valores no NULL.

Notas

    Si se especifica SELECT DISTINCT o si la instrucción SELECT contiene una cláusula GROUP BY, las columnas ORDER BY deben estar en la lista SELECT.
    Una cláusula ORDER BY impide que una instrucción SELECT sea un cursor actualizable. Para obtener más información, vea los Requisitos para cursores actualizables y ResultSets actualizables .
    Si no se especifica el orden nulo, el manejo de los valores nulos es:
        NULLS LAST si el género es ASC
        NULLS FIRST si el género es DESC
    Si no se especifica ni el orden ascendente ni el descendente, y tampoco se especifica el orden nulo, se utilizan ambos valores predeterminados y, por lo tanto, el orden será ascendente con NULLS LAST.

Ejemplo usando un nombre de correlación

Puede ordenar el conjunto de resultados por un nombre de correlación, si el nombre de correlación se especifica en la lista de selección. Por ejemplo, para devolver desde la base de datos CITIES todas las entradas en las columnas CITY_NAME y COUNTRY, donde la columna COUNTRY tiene el nombre de correlación NATION, especifique esta instrucción SELECT:

SELECT CITY_NAME, COUNTRY AS NATION
    FROM CITIES
    ORDER BY NATION

Ejemplo usando una expresión numérica
Puede ordenar el conjunto de resultados por una expresión numérica, por ejemplo:

SELECT name, salary, bonus FROM employee
   ORDER BY salary+bonus

En este ejemplo, las columnas de sueldo y bonificación son tipos de datos DECIMALES.
Ejemplo usando una función
Puede ordenar el conjunto de resultados invocando una función, por ejemplo:

SELECT i, len FROM measures
   ORDER BY sin(i)

Ejemplo que especifica ordenamiento nulo
Puede especificar la posición de los valores NULL utilizando la especificación de ordenamiento nulo:

SELECT * FROM t1 ORDER BY c1 DESC NULLS LAST

Comentarios

Entradas populares de este blog

Actualizar las estadísticas

Errores de conexión de Oracle

Operaciones con fechas