Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analysplattformssystem (PDW)
SQL-analysslutpunkt i Microsoft Fabric
Lager i Microsoft Fabric
SQL-databas i Förhandsversion av Microsoft Fabric
Sorterar data som returneras av en fråga i SQL Server. Använd den här satsen för att:
Sortera resultatuppsättningen för en fråga efter den angivna kolumnlistan och om du vill kan du begränsa de rader som returneras till ett angivet intervall. Ordningen i vilken rader returneras i en resultatuppsättning garanteras inte om inte en
ORDER BYsats anges.Bestäm i vilken ordning rankningsfunktionsvärden ska tillämpas på resultatuppsättningen.
Transact-SQL syntaxkonventioner
Note
ORDER BY stöds inte i SELECT/INTO eller CREATE TABLE AS SELECT (CTAS)-instruktioner i Azure Synapse Analytics eller Analytics Platform System (PDW).
Syntax
Syntax för SQL Server och Azure SQL Database.
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
]
}
Syntax för Azure Synapse Analytics och Parallel Data Warehouse.
[ ORDER BY
{
order_by_expression
[ ASC | DESC ]
} [ , ...n ]
]
Arguments
order_by_expression
Anger en kolumn eller ett uttryck som frågeresultatuppsättningen ska sorteras på. En sorteringskolumn kan anges som ett namn eller kolumnalias eller ett icke-negativt heltal som representerar kolumnens position i urvalslistan.
Flera sorteringskolumner kan anges. Kolumnnamn måste vara unika. Sekvensen för sorteringskolumnerna ORDER BY i -satsen definierar organisationen för den sorterade resultatuppsättningen. Det innebär att resultatuppsättningen sorteras efter den första kolumnen och sedan sorteras den ordnade listan efter den andra kolumnen och så vidare.
Kolumnnamnen ORDER BY som refereras till i -satsen måste motsvara antingen ett kolumn- eller kolumnalias i urvalslistan eller till en kolumn som definierats i en tabell som anges i FROM -satsen utan tvetydigheter.
ORDER BY Om -satsen refererar till ett kolumnalias från urvalslistan måste kolumnaliaset användas på egen hand och inte som en del av något uttryck i ORDER BY -satsen, till exempel:
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
Anger att ORDER BY åtgärden ska utföras enligt sortering som anges i collation_name och inte enligt sortering av kolumnen enligt definitionen i tabellen eller vyn.
Collation_name kan vara antingen ett Windows-sorteringsnamn eller ett SQL-sorteringsnamn. För mer information, se Sortering och Unicode-stöd.
COLLATE gäller endast för kolumner av typen char, varchar, ncharoch nvarchar.
ASC | DESC
Anger att värdena i den angivna kolumnen ska sorteras i stigande eller fallande ordning.
ASC sorterar från det lägsta värdet till det högsta värdet.
DESC sorterar från högsta till lägsta värde.
ASC är standardsorteringsordningen.
NULL värden behandlas som de lägsta möjliga värdena.
OFFSET { integer_constant | offset_row_count_expression } { ROW | RADER }
Gäller för: SQL Server 2012 (11.x) och senare versioner, Azure SQL Database och Azure SQL Managed Instance.
Anger antalet rader som ska hoppa över innan det börjar returnera rader från frågeuttrycket. Värdet kan vara en heltalskonstant eller ett uttryck som är större än eller lika med noll.
offset_row_count_expression kan vara en underfråga för variabel, parameter eller konstant skalär. När en underfråga används kan den inte referera till några kolumner som definierats i det yttre frågeomfånget. Det kan alltså inte korreleras med den yttre frågan.
ROW och ROWS är synonymer och tillhandahålls för ANSI-kompatibilitet.
I frågekörningsplaner visas värdet för antal förskjutningsrader i frågeoperatorns TOPoffsetattribut.
FETCH { FIRST | NEXT } { integer_constant fetch_row_count_expression | } { ROW | ENDAST RADER }
Gäller för: SQL Server 2012 (11.x) och senare versioner, Azure SQL Database och Azure SQL Managed Instance.
Anger hur många rader som ska returneras när OFFSET satsen har bearbetats. Värdet kan vara en heltalskonstant eller ett uttryck som är större än eller lika med ett.
fetch_row_count_expression kan vara en underfråga för variabel, parameter eller konstant skalär. När en underfråga används kan den inte referera till några kolumner som definierats i det yttre frågeomfånget. Det kan alltså inte korreleras med den yttre frågan.
FIRST och NEXT är synonymer och tillhandahålls för ANSI-kompatibilitet.
ROW och ROWS är synonymer och tillhandahålls för ANSI-kompatibilitet.
I frågekörningsplaner visas värdet för antal förskjutningsrader i frågeoperatorns attributTOP Rader eller Översta.
Best practices
Undvik att ange heltal i ORDER BY -satsen som positionella representationer av kolumnerna i urvalslistan. Även om en instruktion som SELECT ProductID, Name FROM Production.Production ORDER BY 2 är giltig är instruktionen till exempel inte lika lätt att förstå av andra jämfört med att ange det faktiska kolumnnamnet. Dessutom kräver ändringar i urvalslistan, till exempel att ändra kolumnordningen eller lägga till nya kolumner, att ORDER BY satsen ändras för att undvika oväntade resultat.
Använd alltid en ORDER BY sats i en SELECT TOP (<n>) -instruktion. Det här är det enda sättet att förutsäga vilka rader som påverkas av TOP. Mer information finns i TOP.
Interoperability
När den används med en SELECT...INTO -instruktion för INSERT...SELECT att infoga rader från en annan källa ORDER BY garanterar satsen inte att raderna infogas i den angivna ordningen.
Om du använder OFFSET och FETCH i en vy ändras inte vyns uppdateringsbarhetsegenskap.
Limitations
Det finns ingen gräns för antalet kolumner i ORDER BY -satsen. Den totala storleken på kolumnerna som anges i en ORDER BY sats får dock inte överstiga 8 060 byte.
Kolumner av typen ntext, text, bild, geografi, geometri och xml kan inte användas i en ORDER BY sats.
Det går inte att ange ett heltal eller en konstant när order_by_expression visas i en rangordningsfunktion. Mer information finns i SELECT - OVER-satsen.
Om ett tabellnamn är alias i FROM -satsen kan endast aliasnamnet användas för att kvalificera dess kolumner i ORDER BY -satsen.
Kolumnnamn och alias som anges i ORDER BY -satsen måste definieras i urvalslistan om -instruktionen SELECT innehåller någon av följande satser eller operatorer:
-
UNIONoperatör -
EXCEPToperatör -
INTERSECToperatör SELECT DISTINCT
Dessutom måste kolumnnamnen eller kolumnaliasen anges i urvalslistan för den första frågan (till vänster) när instruktionen innehåller en UNION, EXCEPTINTERSECT eller -operator.
I en fråga som använder UNION, EXCEPTeller INTERSECT operatorer tillåts ORDER BY endast i slutet av -instruktionen. Den här begränsningen gäller endast när du anger UNION, EXCEPToch INTERSECT i en fråga på den översta nivån och inte i en underfråga. Se avsnittet Exempel som följer.
ORDER BY Satsen är inte giltig i vyer, infogade funktioner, härledda tabeller och underfrågor, såvida inte antingen TOP eller OFFSET och-satserna FETCH också anges. När ORDER BY används i dessa objekt används satsen endast för att fastställa de rader som returneras av TOP satsen eller OFFSETFETCH satserna.
ORDER BY Satsen garanterar inte ordnade resultat när dessa konstruktioner efterfrågas, såvida inte ORDER BY även anges i själva frågan.
OFFSET och FETCH stöds inte i indexerade vyer eller i en vy som definieras med hjälp CHECK OPTION av -satsen.
OFFSET och FETCH kan användas i alla frågor som tillåter TOP och ORDER BY med följande begränsningar:
Satsen
OVERstöderOFFSETinte ochFETCH.OFFSETochFETCHkan inte anges direkt iINSERT,UPDATE,MERGEochDELETE-instruktioner, men kan anges i en underfråga som definieras i dessa instruktioner. Till exempel i -instruktionenINSERT INTO SELECTOFFSETochFETCHkan anges i -instruktionenSELECT.I en fråga som använder
UNION,EXCEPTellerINTERSECToperatorer ochFETCHOFFSETendast kan anges i den slutliga frågan som anger ordningen på frågeresultatet.TOPkan inte kombineras medOFFSETochFETCHi samma frågeuttryck (i samma frågeomfång).
Använd OFFSET och FETCH för att begränsa de rader som returneras
Du bör använda OFFSET - och-satserna FETCH i stället för TOP -satsen för att implementera en frågeväxlingslösning och begränsa antalet rader som skickas till ett klientprogram.
Om du använder OFFSET och FETCH som växlingslösning måste du köra frågan en gång för varje sida med data som returneras till klientprogrammet. Om du till exempel vill returnera resultatet av en fråga i steg om 10 rader måste du köra frågan en gång för att returnera raderna 1 till 10 och sedan köra frågan igen för att returnera raderna 11 till 20 och så vidare. Varje fråga är oberoende och inte relaterad till varandra på något sätt. Det innebär att klientprogrammet, till skillnad från att använda en markör där frågan körs en gång och tillståndet underhålls på servern, ansvarar för spårningstillståndet. För att uppnå stabila resultat mellan frågebegäranden med och OFFSETFETCHmåste följande villkor uppfyllas:
De underliggande data som används av frågan får inte ändras. Det vill: antingen uppdateras inte de rader som berörs av frågan eller så körs alla begäranden om sidor från frågan i en enda transaktion med antingen ögonblicksbild eller serialiserbar transaktionsisolering. Mer information om dessa transaktionsisoleringsnivåer finns i ANGE TRANSAKTIONSISOLERINGSNIVÅ.
ORDER BYSatsen innehåller en kolumn eller kombination av kolumner som garanterat är unika.
Se exemplet "Köra flera frågor i en enda transaktion" i avsnittet Exempel senare i den här artikeln.
Om konsekventa körningsplaner är viktiga i växlingslösningen OPTIMIZE FOR bör du överväga att använda frågetipset för parametrarna OFFSET och FETCH . Se Ange uttryck för OFFSET- och FETCH-värden i avsnittet Exempel senare i den här artikeln. Mer information om OPTIMIZE FORfinns i Frågetips.
Examples
Kodexemplen i den här artikeln använder AdventureWorks2022- eller AdventureWorksDW2022-exempeldatabasen, som du kan ladda ned från startsidan Microsoft SQL Server Samples och Community Projects.
| Category | Aktuella syntaxelement |
|---|---|
| Basic syntax | ORDER BY |
| Ange stigande och fallande ordning |
DESC eller ASC |
| Ange en sortering | COLLATE |
| Ange en villkorsstyrd ordning |
CASE uttryck |
| Använda ORDER BY i en rangordningsfunktion | Ranking functions |
| Begränsa antalet rader som returneras |
OFFSET och FETCH |
| Använda ORDER BY med UNION, EXCEPT och INTERSECT | UNION |
Basic syntax
Exempel i det här avsnittet visar de grundläggande funktionerna i ORDER BY-satsen med hjälp av den minsta obligatoriska syntaxen.
A. Ange en enskild kolumn som definierats i urvalslistan
I följande exempel ordnas resultatet som anges av den numeriska ProductID kolumnen. Eftersom en specifik sorteringsordning inte har angetts används standardinställningen (stigande ordning).
USE AdventureWorks2022;
GO
SELECT ProductID, Name
FROM Production.Product
WHERE Name LIKE 'Lock Washer%'
ORDER BY ProductID;
B. Ange en kolumn som inte har definierats i urvalslistan
Följande exempel beställer resultatet som anges av en kolumn som inte ingår i urvalslistan, men som definieras i tabellen som anges i FROM -satsen.
USE AdventureWorks2022;
GO
SELECT ProductID, Name, Color
FROM Production.Product
ORDER BY ListPrice;
C. Ange ett alias som sorteringskolumn
I följande exempel anges kolumnaliaset SchemaName som sorteringsordningskolumnen.
USE AdventureWorks2022;
GO
SELECT name, SCHEMA_NAME(schema_id) AS SchemaName
FROM sys.objects
WHERE type = 'U'
ORDER BY SchemaName;
D. Ange ett uttryck som sorteringskolumn
I följande exempel används ett uttryck som sorteringskolumn. Uttrycket definieras med hjälp DATEPART av funktionen för att sortera resultatuppsättningen efter det år då anställda anställdes.
USE AdventureWorks2022;
GO
SELECT BusinessEntityID, JobTitle, HireDate
FROM HumanResources.Employee
ORDER BY DATEPART(year, HireDate);
Ange stigande och fallande sorteringsordning
A. Ange en fallande ordning
I följande exempel sorteras resultatet som anges av den numeriska kolumnen ProductID i fallande ordning.
USE AdventureWorks2022;
GO
SELECT ProductID, Name
FROM Production.Product
WHERE Name LIKE 'Lock Washer%'
ORDER BY ProductID DESC;
B. Ange en stigande ordning
I följande exempel sorteras resultatet som anges av Name kolumnen i stigande ordning. Tecknen sorteras alfabetiskt, inte numeriskt. Det vill säga 10 sorterar före 2.
USE AdventureWorks2022;
GO
SELECT ProductID, Name
FROM Production.Product
WHERE Name LIKE 'Lock Washer%'
ORDER BY Name ASC;
C. Ange både stigande och fallande ordning
I följande exempel ordnas resultatet som anges med två kolumner. Frågeresultatuppsättningen sorteras först i stigande ordning FirstName efter kolumnen och sorteras sedan i fallande ordning LastName efter kolumnen.
USE AdventureWorks2022;
GO
SELECT LastName, FirstName
FROM Person.Person
WHERE LastName LIKE 'R%'
ORDER BY FirstName ASC, LastName DESC;
Ange en sortering
I följande exempel visas hur du kan ändra i vilken ordning frågeresultatet returneras om du anger en sortering i ORDER BY -satsen. En tabell skapas som innehåller en kolumn som definieras med hjälp av en skiftlägeskänslig, dekorkänslig sortering. Värden infogas med olika skiftläges- och accentskillnader. Eftersom en sortering inte anges i ORDER BY -satsen använder den första frågan sortering av kolumnen när värdena sorteras. I den andra frågan anges en skiftlägeskänslig, dekorkänslig sortering i ORDER BY -satsen, som ändrar ordningen i vilken raderna returneras.
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;
Ange en villkorsstyrd ordning
I följande exempel används CASE uttrycket i en ORDER BY -sats för att villkorligt fastställa sorteringsordningen för raderna baserat på ett angivet kolumnvärde. I det första exemplet utvärderas värdet i SalariedFlag kolumnen i HumanResources.Employee tabellen. Anställda som har SalariedFlag värdet 1 returneras i ordning i fallande BusinessEntityID ordning. Anställda som har SalariedFlag värdet 0 returneras i ordning i BusinessEntityID stigande ordning. I det andra exemplet sorteras resultatuppsättningen efter kolumnen TerritoryName när kolumnen CountryRegionName är lika med "USA" och efter CountryRegionName för alla andra rader.
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;
Använda ORDER BY i en rangordningsfunktion
I följande exempel används ORDER BY -satsen i rankningsfunktionerna ROW_NUMBER, RANK, DENSE_RANKoch 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;
Begränsa antalet rader som returneras
Gäller för: SQL Server 2012 (11.x) och senare versioner, Azure SQL Database och Azure SQL Managed Instance.
I följande exempel används OFFSET och FETCH begränsas antalet rader som returneras av en fråga.
A. Ange heltalskonstanter för OFFSET- och FETCH-värden
I följande exempel anges en heltalskonstant som värdet för OFFSET - och-satserna FETCH . Den första frågan returnerar alla rader sorterade efter kolumnen DepartmentID. Jämför resultaten som returneras av den här frågan med resultatet av de två frågorna som följer den. Nästa fråga använder -satsen OFFSET 5 ROWS för att hoppa över de första fem raderna och returnera alla återstående rader. Den sista frågan använder -satsen OFFSET 0 ROWS för att börja med den första raden och använder FETCH NEXT 10 ROWS ONLY sedan för att begränsa de rader som returneras till 10 rader från den sorterade resultatuppsättningen.
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. Ange variabler för OFFSET- och FETCH-värden
I följande exempel deklareras variablerna @RowsToSkip och @FetchRows och dessa variabler anges i OFFSET - och-satserna 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. Ange uttryck för OFFSET- och FETCH-värden
I följande exempel används uttrycket @StartingRowNumber - 1 för att ange OFFSET värdet och uttrycket @EndingRowNumber - @StartingRowNumber + 1 för att ange FETCH-värdet. Dessutom anges frågetipset , OPTIMIZE FOR. Det här tipset kan användas för att ange ett visst värde för en lokal variabel när frågan kompileras och optimeras. Värdet används endast under frågeoptimering och inte under frågekörningen. Mer information finns i Frågetips.
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. Ange en konstant skalär underfråga för OFFSET- och FETCH-värden
I följande exempel används en konstant skalär underfråga för att definiera värdet för FETCH -satsen. Underfrågan returnerar ett enda värde från kolumnen PageSize i tabellen 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. Köra flera frågor i en enda transaktion
I följande exempel visas en metod för att implementera en växlingslösning som säkerställer att stabila resultat returneras i alla begäranden från frågan. Frågan körs i en enda transaktion med hjälp av ögonblicksbildisoleringsnivån, och kolumnen som anges i ORDER BY -satsen garanterar kolumn unikhet.
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
Använda ORDER BY med UNION, EXCEPT och INTERSECT
När en fråga använder operatorerna UNIONORDER BY , EXCEPTeller INTERSECT måste satsen anges i slutet av -instruktionen och resultatet av de kombinerade frågorna sorteras. I följande exempel returneras alla produkter som är röda eller gula och sorterar den här kombinerade listan efter kolumnen 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;
Exempel: Azure Synapse Analytics and Analytics Platform System (PDW)
I följande exempel visas ordningen på ett resultat som anges av den numeriska EmployeeKey kolumnen i stigande ordning.
-- Uses AdventureWorks
SELECT EmployeeKey, FirstName, LastName
FROM DimEmployee
WHERE LastName LIKE 'A%'
ORDER BY EmployeeKey;
I följande exempel sorteras ett resultat som anges av den numeriska EmployeeKey kolumnen i fallande ordning.
-- Uses AdventureWorks
SELECT EmployeeKey, FirstName, LastName
FROM DimEmployee
WHERE LastName LIKE 'A%'
ORDER BY EmployeeKey DESC;
Följande exempel beställer ett resultat som anges av LastName kolumnen.
-- Uses AdventureWorks
SELECT EmployeeKey, FirstName, LastName
FROM DimEmployee
WHERE LastName LIKE 'A%'
ORDER BY LastName;
Följande exempelordningar efter två kolumner. Den här frågan sorterar först i stigande ordning FirstName efter kolumnen och sorterar sedan vanliga FirstName värden i fallande ordning efter LastName kolumnen.
-- Uses AdventureWorks
SELECT EmployeeKey, FirstName, LastName
FROM DimEmployee
WHERE LastName LIKE 'A%'
ORDER BY LastName, FirstName;