Cláusula ORDER BY (SQL Server Compact)

Especifica el criterio de ordenación del conjunto de resultados. La cláusula ORDER BY no es válida en las subconsultas. También tiene opción de capturar solo una ventana o página de resultados del conjunto de resultados con la cláusula OFFSET-FETCH.

Sintaxis

[ORDER BY { order_by_expression [ ASC | DESC ] } [ ,...n][<offset_fetch>] ] 

<offset_fetch> ::= {OFFSET { integer_constant | offset_row_count_expression } { ROW | ROWS }    [FETCH { FIRST | NEXT } {integer_constant | fetch_row_count_expression } { ROW | ROWS } ONLY    ]}

Argumentos

  • order_by_expression
    Especifica una columna de ordenación. Se puede especificar una columna de ordenación como un nombre o como un alias de columna, que se puede completar con el nombre de tabla o una expresión. Se pueden especificar varias columnas de ordenación. La secuencia de las columnas de ordenación de la cláusula ORDER BY define la organización del conjunto de resultados ordenado.

    La cláusula ORDER BY puede incluir elementos que no aparecen en la lista de selección.

    Nota

    No se pueden utilizar columnas de los tipos de datos ntext y image en una cláusula ORDER BY.

  • ASC
    Especifica que los valores de la columna indicada se deben ordenar de forma ascendente, del 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. Los valores NULL se tratan como los valores más bajos posibles.

  • OFFSET { integer_constant | offset_row_count_expression } { ROW | ROWS }
    Especifica el número de filas que omitir, antes de empezar a devolver filas en la expresión de consulta. El argumento de la cláusula OFFSET puede ser un entero o una expresión que sea mayor o igual que cero. Puede usar ROW y ROWS indistintamente.

  • FETCH {FIRST|NEXT} <rowcount expression> {ROW|ROWS} ONLY
    Especifica el número de filas que se devuelven, tras procesar la cláusula OFFSET. El argumento de la cláusula FETCH puede ser un entero o una expresión que sea mayor o igual que uno. Puede usar ROW y ROWS indistintamente. Del mismo modo, FIRST y NEXT se pueden usar indistintamente.

Comentarios

No existe ningún límite para el número de elementos de la cláusula ORDER BY.

Si se utiliza la cláusula ORDER BY con una instrucción UNION, las columnas en las que se realiza la ordenación deben ser los nombres o alias especificados en la primera instrucción SELECT. Por ejemplo, la primera de las siguientes instrucciones SELECT se realizará correctamente, mientras que la segunda causará un error.

Esta instrucción se realizará correctamente porque col1 pertenece a la primera tabla (t1).

Create t1 (col1 int, col2 int);

Create t2 (col3 int, col4 int);

SELECT * from t1 UNION SELECT * from t2 ORDER BY col1;

Esta instrucción causará un error porque col3 no pertenece a la primera tabla (t1).

SELECT * from t1 UNION SELECT * from t2 ORDER BY col3;

Ejemplo

En el ejemplo siguiente se enumeran los empleados por sus nombres.

SELECT First Name + ' ' + Last Name FROM Employees ORDER BY First Name

En los ejemplos siguientes de muestra el uso de la cláusula OFFSET-FETCH con ORDER BY, donde se omiten las 10 primeras filas del conjunto de resultados ordenado y se devuelven las filas restantes.

SELECT First Name + ' ' + Last Name FROM Employees ORDER BY First Name OFFSET 10 ROWS;

Vea también

Referencia

Cláusula OFFSET FETCH (SQL Server Compact)