Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Sélection du nième enregistrement dans une requête SQL

C'est une question d'entretien classique.

Dans Ms SQL 2005+, vous pouvez utiliser le ROW_NUMBER() mot-clé et avoir le prédicat ROW_NUMBER =n

USE AdventureWorks;
GO
WITH OrderedOrders AS
(
    SELECT SalesOrderID, OrderDate,
    ROW_NUMBER() OVER (ORDER BY OrderDate) AS 'RowNumber'
    FROM Sales.SalesOrderHeader 
)  

SELECT * 
FROM OrderedOrders 
WHERE RowNumber = 5;

Dans SQL2000, vous pourriez faire quelque chose comme

SELECT Top 1 *FROM
[tblApplications]
where [ApplicationID] In
(
    SELECT TOP 5 [ApplicationID]
    FROM [dbo].[tblApplications]
    order by applicationId Desc
)