SELECT — предложение ORDER BY (Transact-SQL)
Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure конечной точке аналитики платформы Аналитики Azure Synapse Analytics (PDW) в Microsoft Fabric Хранилище в базе данных Microsoft Fabric SQL в Microsoft Fabric
Сортирует данные, возвращенные запросом в SQL Server. Это предложение используется для следующих целей:
Упорядочение результирующего набора запроса по заданному списку столбцов и (дополнительно) ограничение числа возвращаемых строк указанным диапазоном. Порядок возврата строк в результирующем
ORDER BY
наборе не гарантируется, если предложение не указано.Определение порядка, в котором значения ранжирующей функции применяются к результирующему набору.
Соглашения о синтаксисе Transact-SQL
Примечание.
ORDER BY
не поддерживается в инструкциях CTAS в SELECT
/INTO
CREATE TABLE AS SELECT
Azure Synapse Analytics или Analytics Platform System (PDW).
Синтаксис
Синтаксис ДЛЯ SQL Server и База данных SQL 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
]
}
Синтаксис для Azure Synapse Analytics и параллельного хранилища данных.
[ ORDER BY
{
order_by_expression
[ ASC | DESC ]
} [ , ...n ]
]
Аргументы
order_by_expression
Указывает столбец или выражение, по которому производится сортировка результирующего набора запроса. Столбец сортировки можно указать как псевдоним имени или столбца или целое число, не отрицательное, представляющее позицию столбца в списке выбора.
Можно указать несколько столбцов сортировки. Имена столбцов должны быть уникальными. Последовательность столбцов сортировки в ORDER BY
предложении определяет организацию отсортированного результирующего набора. Иными словами, результирующий набор сортируется по первому столбцу, затем упорядоченный список сортируется по второму и т. д.
Имена столбцов, на которые ссылается предложение ORDER BY
, должны соответствовать псевдониму столбца или столбца в списке выбора или столбцу, определенному в таблице, указанной в FROM
предложении без неоднозначности. ORDER BY
Если предложение ссылается на псевдоним столбца из списка выбора, псевдоним столбца должен использоваться самостоятельно, а не как часть какого-то выражения в ORDER BY
предложении, например:
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
Указывает, что ORDER BY
операция должна выполняться в соответствии с параметрами сортировки, указанными в collation_name, а не в соответствии с параметрами сортировки столбца, как определено в таблице или представлении. Collation_name может быть именем сортировки Windows или именем сортировки SQL. Дополнительные сведения см. в разделе о поддержке сортировки и Юникода. COLLATE
применимо только для столбцов типа char, varchar, nchar и nvarchar.
ASC | DESC
Указывает порядок сортировки значений в указанном столбце — по возрастанию или по убыванию. Значение ASC
сортирует от низких значений к высоким. Значение DESC
сортирует от высоких значений к низким. Порядок сортировки по умолчанию — ASC
. NULL
Значения обрабатываются как наименьшие возможные значения.
OFFSET { integer_constant | offset_row_count_expression } { ROW | ROWS }
Область применения: SQL Server 2012 (11.x) и более поздних версий, База данных SQL Azure и Управляемый экземпляр SQL Azure.
Указывает число сток, которые необходимо пропустить, прежде чем будет начат возврат строк из выражения запроса. Это значение может быть целочисленной константой или выражением, значение которого больше нуля или равно нулю.
offset_row_count_expression может быть переменной, параметром или вложенным запросом, возвращающим скалярную константу. Если используется вложенный запрос, он не может ссылаться на столбцы, определенные во внешней области запроса. То есть его нельзя сопоставить с внешним запросом.
ROW
и ROWS
являются синонимами и предоставляются для совместимости ANSI.
В планах выполнения запросов значение счетчика строк смещения отображается в атрибуте TOP
Offset оператора запроса.
FETCH { FIRST | NEXT } { integer_constant | fetch_row_count_expression } { ROW | ROWS } ONLY
Область применения: SQL Server 2012 (11.x) и более поздних версий, База данных SQL Azure и Управляемый экземпляр SQL Azure.
Указывает количество строк, возвращаемых после OFFSET
обработки предложения. Это значение может быть целочисленной константой или выражением, значение которого больше единицы или равно единице.
fetch_row_count_expression может быть переменной, параметром или вложенным запросом, возвращающим скалярную константу. Если используется вложенный запрос, он не может ссылаться на столбцы, определенные во внешней области запроса. То есть его нельзя сопоставить с внешним запросом.
FIRST
и NEXT
являются синонимами и предоставляются для совместимости ANSI.
ROW
и ROWS
являются синонимами и предоставляются для совместимости ANSI.
В планах выполнения запросов значение счетчика строк смещения отображается в атрибуте TOP
Rows или Top оператора запроса.
Рекомендации
Избегайте указания целых чисел в предложении в ORDER BY
качестве позиционных представлений столбцов в списке выбора. Например, хотя оператор SELECT ProductID, Name FROM Production.Production ORDER BY 2
является допустимым, оператор не так легко понимается другими пользователями по сравнению с указанием фактического имени столбца. Кроме того, изменения в списке выбора, такие как изменение порядка столбцов или добавление новых столбцов, требуют изменения ORDER BY
предложения, чтобы избежать непредвиденных результатов.
В инструкции SELECT TOP (<n>)
всегда используйте ORDER BY
предложение. Это единственный способ прогнозировать, какие строки затрагиваются TOP
. Дополнительные сведения см. в разделе TOP.
Совместимость
При использовании с оператором SELECT...INTO
или INSERT...SELECT
инструкцией для вставки строк из другого источника ORDER BY
предложение не гарантирует вставку строк в указанном порядке.
Использование OFFSET
и FETCH
в представлении не изменяет свойство возможности обновления представления.
Ограничения
Количество столбцов в ORDER BY
предложении не ограничено. Однако общий размер столбцов, указанных в ORDER BY
предложении, не может превышать 8060 байт.
Столбцы типа ntext, text, image, geography, geometry и xml нельзя использовать в предложенииORDER BY
.
Целое число или константа нельзя указать, когда order_by_expression отображается в функции ранжирования. Дополнительные сведения см. в предложении SELECT - OVER.
Если имя таблицы является псевдонимом в FROM
предложении, для определения столбцов в ORDER BY
предложении можно использовать только имя псевдонима.
Имена столбцов и псевдонимы, указанные в ORDER BY
предложении, должны быть определены в списке выбора, если инструкция SELECT
содержит одно из следующих предложений или операторов:
- Оператор
UNION
- Оператор
EXCEPT
- Оператор
INTERSECT
SELECT DISTINCT
Кроме того, если инструкция включает UNION
оператор или EXCEPT
INTERSECT
оператор, имена столбцов или псевдонимы столбцов, необходимо указать в списке выбора первого (левого) запроса.
В запросе, использующего UNION
операторы или EXCEPT
INTERSECT
операторы, ORDER BY
разрешено только в конце инструкции. Это ограничение применяется только при указании UNION
, EXCEPT
а также в запросе верхнего уровня, а INTERSECT
не в вложенных запросах. См. раздел "Примеры", приведенный ниже.
Предложение ORDER BY
недопустимо в представлениях, встроенных функциях, производных таблицах и вложенных запросах, если TOP
не указаны или OFFSET
FETCH
не указаны предложения. При ORDER BY
использовании в этих объектах предложение используется только для определения строк, возвращаемых предложением TOP
или OFFSET
FETCH
предложениями. Предложение ORDER BY
не гарантирует упорядоченные результаты при запросе этих конструкций, если ORDER BY
в самом запросе не указано.
OFFSET
и FETCH
не поддерживаются в индексированных представлениях или в представлении, определяемом CHECK OPTION
с помощью предложения.
OFFSET
и FETCH
его можно использовать в любом запросе, который позволяет TOP
и ORDER BY
с помощью следующих ограничений:
Предложение
OVER
не поддерживаетOFFSET
иFETCH
.OFFSET
иFETCH
не может быть указан непосредственно вINSERT
инструкциях ,MERGE
UPDATE
иDELETE
операторов, но их можно указать в вложенных запросах, определенных в этих инструкциях. Например, в инструкцииINSERT INTO SELECT
OFFSET
можноFETCH
указать в инструкцииSELECT
.В запросе, использующего
UNION
EXCEPT
операторы илиINTERSECT
операторы, можноFETCH
указать только в окончательном запросе,OFFSET
который указывает порядок результатов запроса.TOP
Не удается объединить иOFFSET
FETCH
в одном выражении запроса (в той же области запроса).
Использование OFFSET и FETCH для ограничения возвращаемых строк
Следует использовать OFFSET
предложения и FETCH
предложения вместо TOP
предложения для реализации решения по страницам запросов и ограничения количества строк, отправленных клиентскому приложению.
Для использования OFFSET
и FETCH
в качестве решения для разбиения на страницы требуется выполнение запроса по одному разу для каждой страницы данных, возвращаемых клиентскому приложению. Например, чтобы вернуть результаты запроса в 10 строк, необходимо выполнить запрос один раз, чтобы вернуть строки 1–10, а затем снова запустить запрос, чтобы вернуть строки 11–20 и т. д. Каждый запрос выполняется независимо и никаким образом не связан с другими запросами. Это означает, что в отличие от использования курсора, где запрос выполняется всего один раз, а текущее состояние хранится на сервере, за отслеживание состояния отвечает клиентское приложение. Чтобы достичь стабильных результатов между запросами с помощью OFFSET
FETCH
и следующими условиями, необходимо выполнить следующие условия:
Базовые данные, используемые запросом, должны быть неизменными. То есть строки, касающиеся запроса, не обновляются или все запросы страниц из запроса выполняются в одной транзакции с помощью изоляции моментальных снимков или сериализуемых транзакций. Дополнительные сведения об этих уровнях изоляции транзакций см. в разделе SET TRANSACTION ISOLATION LEVEL.
Предложение
ORDER BY
содержит столбец или сочетание столбцов, которые гарантированно будут уникальными.
См. пример "Выполнение нескольких запросов в одной транзакции" в разделе "Примеры" далее в этой статье.
Если согласованные планы выполнения важны в решении по страницам, рассмотрите возможность использования OPTIMIZE FOR
указания запроса для OFFSET
параметров и FETCH
параметров. См. раздел "Указание выражений" для значений OFFSET и FETCH в разделе "Примеры " далее в этой статье. Дополнительные сведения см. в OPTIMIZE FOR
разделе "Подсказки запросов".
Примеры
Примеры кода Transact-SQL в этой статье используют AdventureWorks2022
базу данных или AdventureWorksDW2022
пример базы данных, которую можно скачать с домашней страницы примеров и проектов сообщества Microsoft SQL Server.
Категория | Используемые элементы синтаксиса |
---|---|
Основной синтаксис | ORDER BY |
Укажите порядок возрастания и убывания | DESC или ASC |
Указание параметров сортировки | COLLATE |
Указание условного порядка | Выражение CASE |
Использование ORDER BY в функции ранжирования | Ранжирующие функции |
Ограничение количества возвращаемых строк | OFFSET и FETCH . |
Использование ORDER BY с UNION, EXCEPT и INTERSECT | UNION |
Основной синтаксис
Примеры в этом разделе демонстрируют основные функциональные возможности ORDER BY
предложения с помощью минимального обязательного синтаксиса.
А. Указание одного столбца, определенного в списке выбора
В следующем примере производится упорядочение результирующего набора по числовому столбцу ProductID
. Так как определенный порядок сортировки не указан, используется значение по умолчанию (по возрастанию).
USE AdventureWorks2022;
GO
SELECT ProductID, Name
FROM Production.Product
WHERE Name LIKE 'Lock Washer%'
ORDER BY ProductID;
B. Укажите столбец, который не определен в списке выбора
В следующем примере показано, как упорядочить результирующий набор столбцом, который не включен в список выбора, но определен в таблице, указанной в предложении FROM
.
USE AdventureWorks2022;
GO
SELECT ProductID, Name, Color
FROM Production.Product
ORDER BY ListPrice;
В. Укажите псевдоним в качестве столбца сортировки
В следующем примере в качестве столбца сортировки указывается псевдоним столбца SchemaName
.
USE AdventureWorks2022;
GO
SELECT name, SCHEMA_NAME(schema_id) AS SchemaName
FROM sys.objects
WHERE type = 'U'
ORDER BY SchemaName;
D. Указание выражения в качестве столбца сортировки
В следующем примере в качестве столбца сортировки используется выражение. Выражение определяется с помощью DATEPART
функции для сортировки результирующих наборов по году, в котором были наняты сотрудники.
USE AdventureWorks2022;
GO
SELECT BusinessEntityID, JobTitle, HireDate
FROM HumanResources.Employee
ORDER BY DATEPART(year, HireDate);
Указание порядка сортировки по возрастанию и убыванию
А. Указание порядка убывания
В следующем примере производится упорядочение результирующего набора по числовому столбцу ProductID
в убывающем порядке.
USE AdventureWorks2022;
GO
SELECT ProductID, Name
FROM Production.Product
WHERE Name LIKE 'Lock Washer%'
ORDER BY ProductID DESC;
B. Укажите порядок возрастания
В следующем примере производится упорядочение результирующего набора по столбцу Name
в возрастающем порядке. Символьные значения сортируются в алфавитном порядке, а не в числовом. Иными словами, отсортированное значение 10 находится перед 2.
USE AdventureWorks2022;
GO
SELECT ProductID, Name
FROM Production.Product
WHERE Name LIKE 'Lock Washer%'
ORDER BY Name ASC;
В. Укажите порядок возрастания и убывания
В следующем примере производится упорядочение результирующего набора по двум столбцам. Результирующий набор запроса сначала сортируется по возрастанию по столбцу FirstName
, а затем в убывающем порядке по столбцу LastName
.
USE AdventureWorks2022;
GO
SELECT LastName, FirstName
FROM Person.Person
WHERE LastName LIKE 'R%'
ORDER BY FirstName ASC, LastName DESC;
Указание параметров сортировки
В следующем примере показано, как указать параметры сортировки в ORDER BY
предложении может изменить порядок возврата результатов запроса. Созданная таблица содержит столбец, определенный без учета регистра и параметров сортировки диакритических знаков. Значения вставляются с различными различиями регистра и акцента. Так как параметры сортировки не указаны в ORDER BY
предложении, первый запрос использует параметры сортировки столбца при сортировке значений. Во втором запросе в предложении указывается ORDER BY
параметры сортировки с учетом регистра, чувствительные к регистру, которые изменяют порядок возврата строк.
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;
Указание условного порядка
В следующих примерах выражение в ORDER BY
предложении используется CASE
для условного определения порядка сортировки строк на основе заданного значения столбца. В первом примере вычисляется значение столбца SalariedFlag
таблицы HumanResources.Employee
. Сотрудники, для которых столбец SalariedFlag
имеет значение 1, возвращаются в порядке BusinessEntityID
(по убыванию). Сотрудники, для которых столбец SalariedFlag
имеет значение 0, возвращаются в порядке BusinessEntityID
(по возрастанию). Во втором примере результирующий набор упорядочивается по столбцу TerritoryName
, если столбец CountryRegionName
содержит значение «США», и по столбцу CountryRegionName
в остальных строках.
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;
Использование ORDER BY в функции ранжирования
В следующем примере используется ORDER BY
предложение в функциях ROW_NUMBER
ранжирования , RANK
и DENSE_RANK
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;
Ограничение количества возвращаемых строк
Область применения: SQL Server 2012 (11.x) и более поздних версий, База данных SQL Azure и Управляемый экземпляр SQL Azure.
В следующих примерах используется OFFSET
и FETCH
ограничивается количество строк, возвращаемых запросом.
А. Указание целых констант для значений OFFSET и FETCH
В следующем примере указывается целочисленная константа в качестве значения для OFFSET
предложений и FETCH
предложений. Первый запрос возвращает все строки, отсортированные по столбцу DepartmentID
. Сравните результаты, возвращенные этим запросом, с результатами двух следующих запросов. Следующий запрос использует предложение OFFSET 5 ROWS
, чтобы пропустить первые пять строк и вернуть все оставшиеся строки. Конечный запрос содержит предложение OFFSET 0 ROWS
, чтобы начать с первой строки, а затем предложение FETCH NEXT 10 ROWS ONLY
, ограничивающее число возвращаемых строк до 10 из сортированного результирующего набора.
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. Указание переменных для значений OFFSET и FETCH
В следующем примере объявляют переменные и @FetchRows
указываются эти переменные @RowsToSkip
в OFFSET
предложениях и 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;
В. Указание выражений для значений OFFSET и FETCH
В следующем примере выражение @StartingRowNumber - 1
используется для указания OFFSET
значения и выражения @EndingRowNumber - @StartingRowNumber + 1
для указания значения FETCH. Кроме того, указывается указание OPTIMIZE FOR
запроса. Это указание можно использовать, чтобы предоставить конкретное значение для локальной переменной при компиляции и оптимизации запросов. Значение используется только в процессе оптимизации запроса, но не в процессе выполнения. Дополнительные сведения см. в указаниях запросов.
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. Указание скалярного запроса констант для значений OFFSET и FETCH
В следующем примере используется константный скалярный вложенный запрос для определения значения предложения FETCH
. Вложенный запрос возвращает единственное значение из столбца PageSize
в таблице 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;
Е. Выполнение нескольких запросов в одной транзакции
В следующем примере показан один из методов реализации решения разбиения на страницы, который обеспечивает стабильные результаты, возвращаемые во всех запросах. Запрос выполняется в одной транзакции с помощью уровня изоляции моментального снимка, а столбец, указанный в ORDER BY
предложении, гарантирует уникальность столбца.
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
Использование ORDER BY с UNION, EXCEPT и INTERSECT
Если запрос использует UNION
EXCEPT
операторы или INTERSECT
операторы, ORDER BY
предложение должно быть указано в конце инструкции, а результаты объединенных запросов сортируются. В следующем примере возвращаются все продукты желтого или красного цвета, отсортированные в общем списке по столбцу 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;
Примеры: Azure Synapse Analytics и система платформы аналитики (PDW)
В следующем примере демонстрируется упорядочение результирующего набора по числовому столбцу EmployeeKey
в возрастающем порядке.
-- Uses AdventureWorks
SELECT EmployeeKey, FirstName, LastName
FROM DimEmployee
WHERE LastName LIKE 'A%'
ORDER BY EmployeeKey;
В следующем примере производится упорядочение результирующего набора по числовому столбцу EmployeeKey
в убывающем порядке.
-- Uses AdventureWorks
SELECT EmployeeKey, FirstName, LastName
FROM DimEmployee
WHERE LastName LIKE 'A%'
ORDER BY EmployeeKey DESC;
В следующем примере производится упорядочение результирующего набора по столбцу LastName
.
-- Uses AdventureWorks
SELECT EmployeeKey, FirstName, LastName
FROM DimEmployee
WHERE LastName LIKE 'A%'
ORDER BY LastName;
В следующем примере производится упорядочение по двум столбцам. Этот запрос сначала сортирует в возрастающем порядке по столбцу FirstName
, а затем сортирует общие значения FirstName
в убывающем порядке по столбцу LastName
.
-- Uses AdventureWorks
SELECT EmployeeKey, FirstName, LastName
FROM DimEmployee
WHERE LastName LIKE 'A%'
ORDER BY LastName, FirstName;