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
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