ORDER BY (cláusula de Transact-SQL)

Actualizado: 14 de abril de 2006

Especifica el orden utilizado en las columnas devueltas en una instrucción SELECT. La cláusula ORDER BY no es válida en vistas, funciones en línea, tablas derivadas ni subconsultas, salvo que se especifique también TOP.

[!NOTA] Cuando se utiliza ORDER BY en la definición de una vista, función en línea, tabla derivada o subconsulta, la cláusula sólo se utiliza para determinar las filas devueltas por la cláusula TOP. Esta cláusula no garantiza resultados ordenados cuando se consulten estos constructores, a menos que también se especifique ORDER BY en la misma consulta.

Icono de vínculo a temasConvenciones de sintaxis de Transact-SQL

Sintaxis

[ ORDER BY 
    {
    order_by_expression 
  [ COLLATE collation_name ] 
  [ ASC | DESC ] 
    } [ ,...n ] 
] 

Argumentos

  • order_by_expression
    Especifica la columna según la que se va a ordenar. Una columna de orden se puede especificar como un nombre o un alias de columna, o un entero no negativo que representa la posición del nombre o alias en la lista de selección. No puede especificarse un entero cuando en una función de categoría aparece order_by_expression . Una columna de orden puede incluir una expresión, pero cuando la base de datos está en el modo de compatibilidad (90) de SQL Server 2005, la expresión no puede resolverse en una constante. Los nombres o los alias de columna pueden ser completados con el nombre de tabla o vista. En SQL Server 2005, los nombres y los alias de columna completos se resuelven en las columnas que aparecen en la cláusula FROM. Si el parámetro order_by_expression no está calificado, su valor debe ser único entre todas las columnas que aparecen en la instrucción SELECT.

    Es posible especificar varias columnas de orden. La secuencia de las columnas de orden de la cláusula ORDER BY define la organización del conjunto ordenado de resultados.

    La cláusula ORDER BY puede incluir elementos que no aparecen en la lista de selección. Sin embargo, si se especifica SELECT DISTINCT, si la instrucción contiene una cláusula GROUP BY o si la instrucción SELECT contiene un operador UNION, las columnas de orden deben aparecer en la lista de selección.

    Además, cuando la instrucción SELECT incluye un operador UNION, los nombres o los alias de columna deben ser los especificados en la primera lista de selección.

    [!NOTA] Las columnas de tipo ntext, text, image o xml no se pueden utilizar en una cláusula ORDER BY.

  • COLLATE {collation_name}
    Especifica que la operación ORDER BY debe realizarse conforme a la intercalación especificada en collation_name y no conforme a la intercalación de la columna definida en la tabla o vista. collation_name puede ser un nombre de intercalación de Windows o de SQL. Para obtener más información, vea Configuración de intercalación en el programa de instalación y Utilizar intercalaciones de SQL. COLLATE sólo se aplica a las columnas con tipos de datos char, varchar, nchar y nvarchar.
  • ASC
    Indica que los valores de la columna especificada se deben ordenar de manera ascendente, desde el valor más bajo al más alto.
  • DESC
    Indica que los valores de la columna especificada se deben ordenar de manera descendente, desde el valor más alto al valor más bajo.

Notas

Los valores NULL se tratan como los valores más bajos posibles.

No hay límite para el número de elementos en una cláusula ORDER BY. Sin embargo, existe un límite de 8.060 bytes en el tamaño de fila de las tablas de trabajo intermedias necesarias para las operaciones de orden. Este número limita el tamaño total de las columnas especificadas en una cláusula ORDER BY.

Cuando se utiliza con una instrucción SELECT...INTO para insertar filas de otro origen, la cláusula ORDER BY no garantiza la inserción de las filas en el orden especificado.

Vea también

Referencia

Expresiones (Transact-SQL)
SELECT (Transact-SQL)
FROM (Transact-SQL)

Otros recursos

Ordenar filas con ORDER BY

Ayuda e información

Obtener ayuda sobre SQL Server 2005

Historial de cambios

Versión Historial

14 de abril de 2006

Contenido nuevo:
  • Se ha aclarado el propósito de ORDER BY en la definición de una función en línea, tabla derivada o subconsulta.

5 de diciembre de 2005

Contenido nuevo:
  • Se ha aclarado el propósito de ORDER BY en una definición de vista.