Partilhar via


SELECT - ORDER BY cláusula (Transact-SQL)

Aplica-se a:SQL ServerAzure SQL DatabaseInstância Gerida do Azure SQLAzure Synapse AnalyticsSistema de Plataforma Analítica (PDW)Ponto de extremidade de análise SQL no Microsoft FabricWarehouse no Microsoft FabricBanco de dados SQL no Microsoft Fabric Preview

Classifica os dados retornados por uma consulta no SQL Server. Utilize esta cláusula para:

  • Ordene o conjunto de resultados de uma consulta pela lista de colunas especificada e, opcionalmente, limite as linhas retornadas a um intervalo especificado. A ordem na qual as linhas são retornadas em um conjunto de resultados não é garantida, a menos que uma ORDER BY cláusula seja especificada.

  • Determine a ordem na qual os valores da função de classificação são aplicados ao conjunto de resultados.

Transact-SQL convenções de sintaxe

Note

ORDER BY não é suportado em SELECT/INTO instruções ou CREATE TABLE AS SELECT (CTAS) no Azure Synapse Analytics ou no Analytics Platform System (PDW).

Syntax

Sintaxe do SQL Server e do Banco de Dados SQL do Azure.

ORDER BY order_by_expression
    [ COLLATE collation_name ]
    [ 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
    ]
}

Sintaxe para o Azure Synapse Analytics e o Parallel Data Warehouse.

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

Arguments

order_by_expression

Especifica uma coluna ou expressão na qual classificar o conjunto de resultados da consulta. Uma coluna de classificação pode ser especificada como um nome ou alias de coluna, ou um inteiro não negativo que representa a posição da coluna na lista de seleção.

Várias colunas de classificação podem ser especificadas. Os nomes das colunas têm de ser exclusivos. A sequência das colunas de classificação na ORDER BY cláusula define a organização do conjunto de resultados classificados. Ou seja, o conjunto de resultados é classificado pela primeira coluna e, em seguida, essa lista ordenada é classificada pela segunda coluna, e assim por diante.

Os nomes de ORDER BY coluna mencionados na cláusula devem corresponder a um alias de coluna ou coluna na lista de seleção ou a uma coluna definida em uma tabela especificada na FROM cláusula sem quaisquer ambiguidades. Se a ORDER BY cláusula fizer referência a um alias de coluna da lista de seleção, o alias de coluna deverá ser usado por conta própria, e não como parte de alguma expressão na ORDER BY cláusula, por exemplo:

SELECT SCHEMA_NAME(schema_id) AS SchemaName
FROM sys.objects
ORDER BY SchemaName; -- correct

SELECT SCHEMA_NAME(schema_id) AS SchemaName
FROM sys.objects
ORDER BY SchemaName + ''; -- wrong

COLLATE collation_name

Especifica que a ORDER BY operação deve ser executada de acordo com o agrupamento especificado em collation_name e não de acordo com o agrupamento da coluna, conforme definido na tabela ou exibição. O collation_name pode ser um nome de agrupamento do Windows ou um nome de agrupamento SQL. Para obter mais informações, consulte Classificação e suporte a Unicode. COLLATE é aplicável apenas para colunas do tipo char, varchar, nchare nvarchar.

ASC | DESC

Especifica que os valores na coluna especificada devem ser classificados em ordem crescente ou decrescente. ASC classifica do menor valor para o maior valor. DESC classifica do valor mais alto para o valor mais baixo. ASC é a ordem de classificação padrão. NULL são tratados como os valores mais baixos possíveis.

OFFSET { integer_constant | offset_row_count_expression } { LINHA | LINHAS }

Aplica-se a: SQL Server 2012 (11.x) e versões posteriores, Banco de Dados SQL do Azure e Instância Gerenciada SQL do Azure.

Especifica o número de linhas a serem ignoradas antes de começar a retornar linhas da expressão de consulta. O valor pode ser uma constante inteira ou uma expressão maior ou igual a zero.

offset_row_count_expression pode ser uma variável, parâmetro ou subconsulta escalar constante. Quando uma subconsulta é usada, ela não pode fazer referência a nenhuma coluna definida no escopo da consulta externa. Ou seja, não pode ser correlacionado com a consulta externa.

ROW e ROWS são sinónimos e são fornecidos para compatibilidade ANSI.

Nos planos de execução de consulta, o valor da contagem de linhas de deslocamento é exibido no atributo Offset do operador de TOP consulta.

FETCH { PRIMEIRO | NEXT } { integer_constant | fetch_row_count_expression } { LINHA | APENAS LINHAS }

Aplica-se a: SQL Server 2012 (11.x) e versões posteriores, Banco de Dados SQL do Azure e Instância Gerenciada SQL do Azure.

Especifica o número de linhas a serem retornadas após o processamento da OFFSET cláusula. O valor pode ser uma constante inteira ou uma expressão maior ou igual a uma.

fetch_row_count_expression pode ser uma variável, parâmetro ou subconsulta escalar constante. Quando uma subconsulta é usada, ela não pode fazer referência a nenhuma coluna definida no escopo da consulta externa. Ou seja, não pode ser correlacionado com a consulta externa.

FIRST e NEXT são sinónimos e são fornecidos para compatibilidade ANSI.

ROW e ROWS são sinónimos e são fornecidos para compatibilidade ANSI.

Nos planos de execução de consulta, o valor da contagem de linhas de deslocamento é exibido no atributo Linhas ou Top do TOP operador de consulta.

Best practices

Evite especificar inteiros na ORDER BY cláusula como representações posicionais das colunas na lista de seleção. Por exemplo, embora uma instrução como SELECT ProductID, Name FROM Production.Production ORDER BY 2 a seja válida, a instrução não é tão facilmente compreendida por outras pessoas em comparação com a especificação do nome real da coluna. Além disso, alterações na lista de seleção, como alterar a ordem das colunas ou adicionar novas colunas, exigem a modificação da ORDER BY cláusula para evitar resultados inesperados.

Em uma SELECT TOP (<n>) declaração, use sempre uma ORDER BY cláusula. Esta é a única maneira de indicar de forma previsível quais linhas são afetadas por TOP. Para obter mais informações, consulte TOP.

Interoperability

Quando usada com uma SELECT...INTO instrução or para INSERT...SELECT inserir linhas de outra fonte, a ORDER BY cláusula não garante que as linhas sejam inseridas na ordem especificada.

Usar OFFSET e FETCH em um modo de exibição não altera a propriedade updateability do modo de exibição.

Limitations

Não há limite para o número de colunas na ORDER BY cláusula. No entanto, o tamanho total das colunas especificadas em uma ORDER BY cláusula não pode exceder 8.060 bytes.

Colunas do tipo ntext, text, image, geography, geometry e xml não podem ser usadas em uma ORDER BY cláusula.

Um inteiro ou constante não pode ser especificado quando order_by_expression aparece em uma função de classificação. Para obter mais informações, consulte Cláusula SELECT - OVER.

Se um nome de FROM tabela for aliased na cláusula, somente o nome do alias poderá ser usado para qualificar suas colunas na ORDER BY cláusula.

Os nomes de coluna e aliases especificados na ORDER BY cláusula devem ser definidos na lista de seleção se a SELECT instrução contiver uma das seguintes cláusulas ou operadores:

  • UNION Operador
  • EXCEPT Operador
  • INTERSECT Operador
  • SELECT DISTINCT

Além disso, quando a instrução inclui um UNION, EXCEPTou INTERSECT operador, os nomes de coluna ou aliases de coluna devem ser especificados na lista de seleção da primeira consulta (lado esquerdo).

Em uma consulta que usa UNION, EXCEPTou INTERSECT operadores, ORDER BY é permitido somente no final da instrução. Essa restrição se aplica somente quando você especifica UNION, EXCEPTe INTERSECT em uma consulta de nível superior e não em uma subconsulta. Consulte a secção Exemplos que se segue.

A ORDER BY cláusula não é válida em modos de exibição, funções embutidas, tabelas derivadas e subconsultas, a menos que as TOP cláusulas ou OFFSET e e FETCH também sejam especificadas. Quando ORDER BY é usada nesses objetos, a cláusula é usada apenas para determinar as linhas retornadas pela TOP cláusula ou OFFSET e FETCH cláusulas. A ORDER BY cláusula não garante resultados ordenados quando essas construções são consultadas, a menos que ORDER BY também seja especificada na própria consulta.

OFFSET e FETCH não são suportados em modos de exibição indexados ou em um modo de exibição definido usando a CHECK OPTION cláusula.

OFFSET e FETCH pode ser utilizado em qualquer consulta que permita TOP e ORDER BY com as seguintes limitações:

  • A OVER cláusula não suporta OFFSET e FETCH.

  • OFFSET e FETCH não pode ser especificado diretamente em INSERT, UPDATE, MERGEe DELETE instruções, mas pode ser especificado em uma subconsulta definida nessas instruções. Por exemplo, na INSERT INTO SELECT instrução, OFFSET e FETCH pode ser especificado na SELECT instrução.

  • Em uma consulta que usa UNIONoperadores , EXCEPT ou INTERSECTOFFSET e FETCH só pode ser especificada na consulta final que especifica a ordem dos resultados da consulta.

  • TOP não pode ser combinado com OFFSET e FETCH na mesma expressão de consulta (no mesmo escopo de consulta).

Use OFFSET e FETCH para limitar as linhas retornadas

Você deve usar as OFFSET cláusulas and FETCH em vez da cláusula para implementar uma solução de TOP paginação de consulta e limitar o número de linhas enviadas para um aplicativo cliente.

Usar OFFSET e FETCH como uma solução de paginação requer a execução da consulta uma vez para cada página de dados retornados ao aplicativo cliente. Por exemplo, para retornar os resultados de uma consulta em incrementos de 10 linhas, você deve executar a consulta uma vez para retornar as linhas 1 a 10 e, em seguida, executar a consulta novamente para retornar as linhas 11 a 20 e assim por diante. Cada consulta é independente e não está relacionada entre si de forma alguma. Isso significa que, ao contrário de usar um cursor no qual a consulta é executada uma vez e o estado é mantido no servidor, o aplicativo cliente é responsável pelo rastreamento do estado. Para obter resultados estáveis entre solicitações de consulta usando OFFSET e FETCH, as seguintes condições devem ser atendidas:

  1. Os dados subjacentes usados pela consulta não devem ser alterados. Ou seja, as linhas tocadas pela consulta não são atualizadas ou todas as solicitações de páginas da consulta são executadas em uma única transação usando instantâneo ou isolamento de transação serializável. Para obter mais informações sobre esses níveis de isolamento de transação, consulte SET TRANSACTION ISOLATION LEVEL.

  2. A ORDER BY cláusula contém uma coluna ou combinação de colunas que são garantidamente exclusivas.

Consulte o exemplo "Executando várias consultas em uma única transação" na seção Exemplos mais adiante neste artigo.

Se planos de execução consistentes forem importantes em sua solução de paginação, considere usar a dica OPTIMIZE FOR de consulta para os OFFSET parâmetros e FETCH . Consulte Especificar expressões para valores OFFSET e FETCH na seção Exemplos mais adiante neste artigo. Para obter mais informações sobre OPTIMIZE FORo , consulte Dicas de consulta.

Examples

Os exemplos de código neste artigo usam o banco de dados de exemplo AdventureWorks2022 ou AdventureWorksDW2022, que pode ser descarregado da página inicial de Exemplos e Projetos da Comunidade do Microsoft SQL Server.

Category Elementos de sintaxe em destaque
Basic syntax ORDER BY
Especificar ordem crescente e decrescente DESC ou ASC
Especificar um agrupamento COLLATE
Especificar uma ordem condicional CASE expressão
Usar ORDER BY em uma função de classificação Ranking functions
Limitar o número de linhas retornadas OFFSET e FETCH
Use ORDER BY com UNION, EXCEPT, e INTERSECT UNION

Basic syntax

Os exemplos nesta seção demonstram a funcionalidade básica da cláusula ORDER BY usando a sintaxe mínima necessária.

A. Especificar uma única coluna definida na lista de seleção

O exemplo a seguir ordena o resultado definido pela coluna numérica ProductID . Como uma ordem de classificação específica não é especificada, o padrão (ordem crescente) é usado.

USE AdventureWorks2022;
GO

SELECT ProductID, Name
FROM Production.Product
WHERE Name LIKE 'Lock Washer%'
ORDER BY ProductID;

B. Especificar uma coluna que não está definida na lista de seleção

O exemplo a seguir ordena o resultado definido por uma coluna que não está incluída na lista de seleção, mas é definida na tabela especificada na FROM cláusula.

USE AdventureWorks2022;
GO

SELECT ProductID, Name, Color
FROM Production.Product
ORDER BY ListPrice;

C. Especificar um alias como a coluna de classificação

O exemplo a seguir especifica o alias SchemaName da coluna como a coluna de ordem de classificação.

USE AdventureWorks2022;
GO

SELECT name, SCHEMA_NAME(schema_id) AS SchemaName
FROM sys.objects
WHERE type = 'U'
ORDER BY SchemaName;

D. Especificar uma expressão como a coluna de classificação

O exemplo a seguir usa uma expressão como a coluna de classificação. A expressão é definida usando a DATEPART função para classificar o resultado definido pelo ano em que os funcionários foram contratados.

USE AdventureWorks2022;
GO

SELECT BusinessEntityID, JobTitle, HireDate
FROM HumanResources.Employee
ORDER BY DATEPART(year, HireDate);

Especificar ordem de classificação crescente e decrescente

A. Especificar uma ordem decrescente

O exemplo a seguir ordena o resultado definido pela coluna ProductID numérica em ordem decrescente.

USE AdventureWorks2022;
GO

SELECT ProductID, Name
FROM Production.Product
WHERE Name LIKE 'Lock Washer%'
ORDER BY ProductID DESC;

B. Especificar uma ordem crescente

O exemplo a seguir ordena o resultado definido pela Name coluna em ordem crescente. Os caracteres são ordenados alfabeticamente, não numericamente. Ou seja, 10 tipos antes de 2.

USE AdventureWorks2022;
GO

SELECT ProductID, Name
FROM Production.Product
WHERE Name LIKE 'Lock Washer%'
ORDER BY Name ASC;

C. Especificar ordem crescente e decrescente

O exemplo a seguir ordena o resultado definido por duas colunas. O conjunto de resultados da FirstName consulta é primeiro classificado em ordem crescente pela coluna e, em seguida, ordenado por ordem decrescente pela LastName coluna.

USE AdventureWorks2022;
GO

SELECT LastName, FirstName
FROM Person.Person
WHERE LastName LIKE 'R%'
ORDER BY FirstName ASC, LastName DESC;

Especificar um agrupamento

O exemplo a seguir mostra como a ORDER BY especificação de um agrupamento na cláusula pode alterar a ordem na qual os resultados da consulta são retornados. É criada uma tabela que contém uma coluna definida usando um agrupamento que não diferencia maiúsculas de minúsculas e acentos. Os valores são inseridos com várias diferenças de maiúsculas e minúsculas e acentos. Como um agrupamento não é especificado na ORDER BY cláusula, a primeira consulta usa o agrupamento da coluna ao classificar os valores. Na segunda consulta, um agrupamento que diferencia maiúsculas de minúsculas ORDER BY e acento é especificado na cláusula, que altera a ordem em que as linhas são retornadas.

USE tempdb;
GO

CREATE TABLE #t1 (name NVARCHAR(15) COLLATE Latin1_General_CI_AI);
GO

INSERT INTO #t1
VALUES (N'Sánchez'),
    (N'Sanchez'),
    (N'sánchez'),
    (N'sanchez');

-- This query uses the collation specified for the column 'name' for sorting.
SELECT name
FROM #t1
ORDER BY name;

-- This query uses the collation specified in the ORDER BY clause for sorting.
SELECT name
FROM #t1
ORDER BY name COLLATE Latin1_General_CS_AS;

Especificar uma ordem condicional

Os exemplos a seguir usam a CASE expressão em uma ORDER BY cláusula para determinar condicionalmente a ordem de classificação das linhas com base em um determinado valor de coluna. No primeiro exemplo, o valor na SalariedFlag coluna da HumanResources.Employee tabela é avaliado. Os funcionários que têm o SalariedFlag conjunto como 1 são devolvidos em ordem BusinessEntityID pela ordem decrescente. Os funcionários que têm o SalariedFlag conjunto como 0 são devolvidos em ordem BusinessEntityID crescente pela ordem crescente. No segundo exemplo, o conjunto de resultados é ordenado pela coluna TerritoryName quando a coluna CountryRegionName é igual a 'Estados Unidos' e por CountryRegionName todas as outras linhas.

SELECT BusinessEntityID,
    SalariedFlag
FROM HumanResources.Employee
ORDER BY
    CASE SalariedFlag
        WHEN 1 THEN BusinessEntityID
    END DESC,
    CASE 
        WHEN SalariedFlag = 0 THEN BusinessEntityID
    END;
GO
SELECT BusinessEntityID,
    LastName,
    TerritoryName,
    CountryRegionName
FROM Sales.vSalesPerson
WHERE TerritoryName IS NOT NULL
ORDER BY
    CASE CountryRegionName
        WHEN 'United States' THEN TerritoryName
        ELSE CountryRegionName
    END;

Usar ORDER BY em uma função de classificação

O exemplo a seguir usa a ORDER BY cláusula nas funções ROW_NUMBERde classificação , , DENSE_RANKRANK, e NTILE.

USE AdventureWorks2022;
GO

SELECT p.FirstName,
    p.LastName,
    ROW_NUMBER() OVER (ORDER BY a.PostalCode) AS "Row Number",
    RANK() OVER (ORDER BY a.PostalCode) AS "Rank",
    DENSE_RANK() OVER (ORDER BY a.PostalCode) AS "Dense Rank",
    NTILE(4) OVER (ORDER BY a.PostalCode) AS "Quartile",
    s.SalesYTD,
    a.PostalCode
FROM Sales.SalesPerson AS s
INNER JOIN Person.Person AS p
    ON s.BusinessEntityID = p.BusinessEntityID
INNER JOIN Person.Address AS a
    ON a.AddressID = p.BusinessEntityID
WHERE TerritoryID IS NOT NULL
    AND SalesYTD <> 0;

Limitar o número de linhas retornadas

Aplica-se a: SQL Server 2012 (11.x) e versões posteriores, Banco de Dados SQL do Azure e Instância Gerenciada SQL do Azure.

Os exemplos a seguir usam OFFSET e FETCH para limitar o número de linhas retornadas por uma consulta.

A. Especificar constantes inteiras para valores OFFSET e FETCH

O exemplo a seguir especifica uma constante inteira como o valor das OFFSET cláusulas and FETCH . A primeira consulta retorna todas as linhas ordenadas pela coluna DepartmentID. Compare os resultados retornados por esta consulta com os resultados das duas consultas que a seguem. A próxima consulta usa a cláusula OFFSET 5 ROWS para ignorar as cinco primeiras linhas e retornar todas as linhas restantes. A consulta final usa a cláusula OFFSET 0 ROWS para começar com a primeira linha e, em seguida, usa FETCH NEXT 10 ROWS ONLY para limitar as linhas retornadas a 10 linhas do conjunto de resultados classificados.

USE AdventureWorks2022;
GO

-- Return all rows sorted by the column DepartmentID.
SELECT DepartmentID, Name, GroupName
FROM HumanResources.Department
ORDER BY DepartmentID;

-- Skip the first 5 rows from the sorted result set and return all remaining rows.
SELECT DepartmentID, Name, GroupName
FROM HumanResources.Department
ORDER BY DepartmentID OFFSET 5 ROWS;

-- Skip 0 rows and return only the first 10 rows from the sorted result set.
SELECT DepartmentID, Name, GroupName
FROM HumanResources.Department
ORDER BY DepartmentID OFFSET 0 ROWS
FETCH NEXT 10 ROWS ONLY;

B. Especificar variáveis para valores OFFSET e FETCH

O exemplo a seguir declara as variáveis @RowsToSkip e @FetchRows especifica essas variáveis nas OFFSET cláusulas and FETCH .

USE AdventureWorks2022;
GO

-- Specifying variables for OFFSET and FETCH values
DECLARE
    @RowsToSkip TINYINT = 2,
    @FetchRows TINYINT = 8;

SELECT DepartmentID, Name, GroupName
FROM HumanResources.Department
ORDER BY DepartmentID ASC OFFSET @RowsToSkip ROWS
FETCH NEXT @FetchRows ROWS ONLY;

C. Especificar expressões para valores OFFSET e FETCH

O exemplo a seguir usa a expressão @StartingRowNumber - 1 para especificar o OFFSET valor e a expressão @EndingRowNumber - @StartingRowNumber + 1 para especificar o valor FETCH. Além disso, a dica de consulta, OPTIMIZE FOR, é especificada. Essa dica pode ser usada para fornecer um valor específico para uma variável local quando a consulta é compilada e otimizada. O valor é usado somente durante a otimização da consulta, e não durante a execução da consulta. Para obter mais informações, consulte Dicas de consulta.

USE AdventureWorks2022;
GO

-- Specifying expressions for OFFSET and FETCH values
DECLARE
    @StartingRowNumber TINYINT = 1,
    @EndingRowNumber TINYINT = 8;

SELECT DepartmentID, Name, GroupName
FROM HumanResources.Department
ORDER BY DepartmentID ASC OFFSET @StartingRowNumber - 1 ROWS
FETCH NEXT @EndingRowNumber - @StartingRowNumber + 1 ROWS ONLY
OPTION (OPTIMIZE FOR (@StartingRowNumber = 1, @EndingRowNumber = 20));

D. Especificar uma subconsulta escalar constante para valores OFFSET e FETCH

O exemplo a seguir usa uma subconsulta escalar constante para definir o valor da FETCH cláusula. A subconsulta retorna um único valor da coluna PageSize na tabela dbo.AppSettings.

-- Specifying a constant scalar subquery
USE AdventureWorks2022;
GO

CREATE TABLE dbo.AppSettings (
    AppSettingID INT NOT NULL,
    PageSize INT NOT NULL
);
GO

INSERT INTO dbo.AppSettings
VALUES (1, 10);
GO

DECLARE @StartingRowNumber TINYINT = 1;

SELECT DepartmentID, Name, GroupName
FROM HumanResources.Department
ORDER BY DepartmentID ASC OFFSET @StartingRowNumber ROWS
FETCH NEXT (
    SELECT PageSize
    FROM dbo.AppSettings
    WHERE AppSettingID = 1
) ROWS ONLY;

E. Executar várias consultas em uma única transação

O exemplo a seguir mostra um método de implementação de uma solução de paginação que garante que resultados estáveis sejam retornados em todas as solicitações da consulta. A consulta é executada em uma única transação usando o nível de isolamento de instantâneo, e a coluna especificada na cláusula garante a exclusividade da ORDER BY coluna.

USE AdventureWorks2022;
GO

-- Ensure the database can support the snapshot isolation level set for the query.
IF (
    SELECT snapshot_isolation_state
    FROM sys.databases
    WHERE name = N'AdventureWorks2022'
) = 0
ALTER DATABASE AdventureWorks2022
SET ALLOW_SNAPSHOT_ISOLATION ON;
GO

-- Set the transaction isolation level  to SNAPSHOT for this query.
SET TRANSACTION ISOLATION LEVEL SNAPSHOT;
GO

-- Beginning the transaction.
BEGIN TRANSACTION;
GO

-- Declare and set the variables for the OFFSET and FETCH values.
DECLARE
    @StartingRowNumber INT = 1,
    @RowCountPerPage INT = 3;

-- Create the condition to stop the transaction after all rows have been returned.
WHILE (
    SELECT COUNT(*)
    FROM HumanResources.Department
) >= @StartingRowNumber
BEGIN
    -- Run the query until the stop condition is met.
    SELECT DepartmentID, Name, GroupName
    FROM HumanResources.Department
    ORDER BY DepartmentID ASC OFFSET @StartingRowNumber - 1 ROWS
    FETCH NEXT @RowCountPerPage ROWS ONLY;

    -- Increment @StartingRowNumber value.
    SET @StartingRowNumber = @StartingRowNumber + @RowCountPerPage;

    CONTINUE
END;
GO

COMMIT TRANSACTION;
GO

Use ORDER BY com UNION, EXCEPT, e INTERSECT

Quando uma consulta usa os UNIONoperadores , EXCEPTou , ORDER BY a INTERSECT cláusula deve ser especificada no final da instrução e os resultados das consultas combinadas são classificados. O exemplo a seguir retorna todos os produtos vermelhos ou amarelos e classifica essa lista combinada pela coluna ListPrice.

USE AdventureWorks2022;
GO

SELECT Name, Color, ListPrice
FROM Production.Product
WHERE Color = 'Red'
-- ORDER BY cannot be specified here.

UNION ALL

SELECT Name, Color, ListPrice
FROM Production.Product
WHERE Color = 'Yellow'
ORDER BY ListPrice ASC;

Exemplos: Azure Synapse Analytics and Analytics Platform System (PDW)

O exemplo a seguir demonstra a ordenação de um resultado definido pela coluna numérica EmployeeKey em ordem crescente.

-- Uses AdventureWorks
SELECT EmployeeKey, FirstName, LastName
FROM DimEmployee
WHERE LastName LIKE 'A%'
ORDER BY EmployeeKey;

O exemplo a seguir ordena um resultado definido pela coluna numérica EmployeeKey em ordem decrescente.

-- Uses AdventureWorks
SELECT EmployeeKey, FirstName, LastName
FROM DimEmployee
WHERE LastName LIKE 'A%'
ORDER BY EmployeeKey DESC;

O exemplo a LastName seguir ordena um resultado definido pela coluna.

-- Uses AdventureWorks
SELECT EmployeeKey, FirstName, LastName
FROM DimEmployee
WHERE LastName LIKE 'A%'
ORDER BY LastName;

O exemplo a seguir ordena por duas colunas. Essa consulta primeiro classifica em ordem crescente pela FirstName coluna e, em seguida, classifica os valores comuns FirstName em ordem decrescente pela LastName coluna.

-- Uses AdventureWorks
SELECT EmployeeKey, FirstName, LastName
FROM DimEmployee
WHERE LastName LIKE 'A%'
ORDER BY LastName, FirstName;