SQL

Cómo ordenar el resultado de una consulta con Order By en SQL Server

Estrada Web Group
Administrador
Cómo ordenar el resultado de una consulta con Order By en SQL Server

En este tutorial, aprenderá a usar la cláusula ORDER BY de SQL Server para ordenar los resultados de una consulta por una o más columnas.

Introducción a la cláusula ORDER BY de SQL Server

Cuando utiliza la instrucción SELECT para consultar datos de una tabla, no se garantiza que el orden de las filas en el conjunto de resultados es el que usted requiere. Significa que SQL Server puede devolver un conjunto de resultados con un orden no especificado de filas.

La única forma de garantizar que las filas estén ordenadas como usted las requiere es usar la cláusula ORDER BY. A continuación, se ilustra la sintaxis de la cláusula ORDER BY:

SELECT
    select_list
FROM
    table_name
ORDER BY
    [column_name | expression] [ASC | DESC ]

Primero, debe especificar un nombre de columna o una expresión por la que se va a ordenar el conjunto de resultados de la consulta. Si especifica varias columnas, el conjunto de resultados se ordena por la primera columna y luego ese conjunto de resultados se ordena por la segunda columna, y así sucesivamente.

Las columnas que aparecen en la cláusula ORDER BY deben corresponder a las columnas de la lista de selección o a las columnas definidas en la tabla que se está consultando con la cláusula FROM.

En segundo lugar, use ASC o DESC para especificar si los valores de la columna especificada deben ordenarse en orden ascendente o descendente.

El ASC clasifica el resultado del valor más bajo al valor más alto, es decir, ordena de menor a mayor, mientras que el DESC clasifica el conjunto de resultados del valor más alto al más bajo, es decir, ordena de mayor a menor.

Si no especifica explícitamente ASC o DESC, SQL Server usa ASC como el orden de clasificación predeterminado. Además, SQL Server toma los valores NULL como los valores más bajos o menores.

Al procesar la instrucción SELECT que tiene una cláusula ORDER BY, esta cláusula es la última cláusula que se procesará.

Ejemplo de la cláusula ORDER BY de SQL Server

Utilizaremos la tabla de clientes de la base de datos de muestra que puedes descargar en este link.

ORDER BY EN SQL SERVER

A) Ordenar un conjunto de resultados por una columna en orden ascendente

La siguiente declaración ordena la lista de clientes por nombre, en orden ascendente:
 

SELECT
    first_name,
    last_name
FROM
    sales.customers
ORDER BY
    first_name;

Resultado:

order by desc

En este ejemplo, debido a que no especificamos ASC o DESC, la cláusula ORDER BY usó ASC por default.

B) Ordenar un conjunto de resultados por una columna en orden descendente

La siguiente declaración ordena la lista de clientes por nombre, en orden descendente.
 

SELECT
 firstname,
 lastname
FROM
 sales.customers
ORDER BY
 first_name DESC;

Resultado:

sql SERVER ORDER BY DESENDENTE

En este ejemplo, debido a que especificamos el DESC explícitamente, la cláusula ORDER BY ordenó el conjunto de resultados de la columna first_name en orden descendente.

C) Ordenar un conjunto de resultados por varias columnas

La siguiente declaración recupera el nombre, el apellido y la ciudad de los clientes. Primero ordena la lista de clientes por ciudad y luego por nombre.
 

SELECT
    city,
    first_name,
    last_name
FROM
    sales.customers
ORDER BY
    city,
    first_name;

Resultado:

order by sql seerver dos columnas

D) Ordenar un conjunto de resultados por múltiples columnas y diferentes órdenes

La siguiente declaración ordena a los clientes por ciudad en orden descendente y clasifica el conjunto de resultados ordenados por nombre en orden ascendente.

SELECT
    city,
    first_name,
    last_name
FROM
    sales.customers
ORDER BY
    city DESC,
    first_name ASC;

Resultado:

orden descendente SQL SERVER ORDER BY

E) Ordenar un conjunto de resultados por una columna que no está en la lista de selección
 

Es posible ordenar el conjunto de resultados por una columna que no aparece en la lista de selección. Por ejemplo, la siguiente declaración ordena al cliente por estado, aunque la columna de estado no aparezca en la lista de selección.
 

SELECT
    city,
    first_name,
    last_name
FROM
    sales.customers
ORDER BY
    state;

Resultado:

oRDERNAR POR COLUMNAS QUE NO ESTAN EN LA CONSULTA SQL ORDER BY

Tenga en cuenta que la columna de estado se define en la tabla de clientes. Si no fuera así, tendría una consulta no válida y se generaría un error.

F) Ordenar un conjunto de resultados por una expresión

La función LEN() devuelve el número de caracteres de una cadena. La siguiente instrucción usa la función LEN() en la cláusula ORDER BY para recuperar una lista de clientes ordenada por la longitud del nombre.
 

SELECT
    first_name,
    last_name
FROM
    sales.customers
ORDER BY
    LEN(first_name) DESC;

Resultado:

Ordenar un conjunto de resultados por una expresión Len() order by sql

G) Ordenar por posiciones ordinales de columnas

SQL Server le permite ordenar el conjunto de resultados en función de las posiciones ordinales de las columnas que aparecen en la lista de selección.

La siguiente declaración ordena a los clientes por nombre y apellido. Pero en lugar de especificar los nombres de columna explícitamente, usa las posiciones ordinales de las columnas:

 

SELECT
    first_name,
    last_name
FROM
    sales.customers
ORDER BY
    1,
    2;

En este ejemplo, 1 significa la columna first_name y 2 significa la columna last_name.

Usar las posiciones ordinales de las columnas en la cláusula ORDER BY se considera una mala práctica de programación por un par de razones.

  • Primero, las columnas en una tabla no tienen posiciones ordinales y deben ser referenciadas por su nombre.
  • En segundo lugar, cuando modifica la lista de selección, puede olvidarse de hacer los cambios correspondientes en la cláusula ORDER BY.

Por lo tanto, es una buena práctica especificar siempre los nombres de columna explícitamente en la cláusula ORDER BY.


En este tutorial, ha aprendido a usar la cláusula ORDER BY de SQL Server para ordenar un conjunto de resultados por columnas en orden ascendente o descendente.

Compartir artículo:

Más artículos geniales

Manténgase actualizado

Obtenga excelente contenido en su bandeja de entrada todas las semanas.
Solo contenido excelente, no compartimos su correo electrónico con terceros.
Subir al inicio de la pantalla ;