Classificar seus resultados

Concluído

Na ordem lógica do processamento de consulta, ORDER BY é a última fase a ser executada de uma instrução SELECT. ORDER BY permite que você controle a classificação de linhas conforme elas são retornadas do SQL Server para o aplicativo cliente. O SQL Server não garante a ordem física das linhas em uma tabela e a única maneira de controlar a ordem em que as linhas serão retornadas ao cliente é com uma cláusula ORDER BY. Esse comportamento é consistente a teoria relacional.

Usando a cláusula ORDER BY

Para fazer com que o SQL Server retorne os resultados da consulta em uma ordem específica, adicione uma cláusula ORDER BY neste formato:

SELECT<select_list>
FROM <table_source>
ORDER BY <order_by_list> [ASC|DESC];

ORDER BY pode usar vários tipos de elementos em sua lista:

  • Colunas por nome. Você pode especificar os nomes da(s) coluna(s) segundo os quais os resultados devem ser classificados. Os resultados são retornados na ordem da primeira coluna e, em seguida, subclassificados por cada coluna adicional em ordem.
  • Aliases de coluna. Como ORDER BY é processado após a cláusula SELECT, ele tem acesso a aliases definidos na lista SELECT.
  • Colunas por posição ordinal na lista SELECT. O uso da posição não é recomendado em seus aplicativos, devido à menor legibilidade e ao cuidado extra necessário para manter a lista ORDER BY atualizada. No entanto, para expressões complexas na lista SELECT, o uso do número da posição pode ser útil durante a solução de problemas.
  • Colunas não incluídas na lista SELECT, mas disponíveis nas tabelas listadas na cláusula FROM. Se a consulta usar uma opção DISTINCT, todas as colunas na lista ORDER BY deverão ser incluídas na lista SELECT.

Direção de classificação

Além de especificar as colunas que devem ser usadas para determinar a ordem de classificação, você também pode controlar a direção da classificação. Você pode usar ASC para crescente (A-Z, 0-9) ou DESC para decrescente (Z-A, 9-0). Classificações crescentes são o padrão. Cada coluna pode ter sua própria direção especificada, como no exemplo a seguir:

SELECT ProductCategoryID AS Category, ProductName
FROM Production.Product
ORDER BY Category ASC, Price DESC;