In this article, we will show you how to Retrieve the Last Record for each Group in SQL Server with an example. For this, We are going to use the below-shown data
Retrieve Last Record for each Group in SQL Server Example 1
In this example, we used CTE and ROW_NUMBER Function to rank each record present in a partition. You can also use remaining Ranking functions, as per your requirements.
- First, partition the data by Occupation and assign the rank number using the yearly income.
- Next, it is going to select the last record from each SQL Server group.
WITH TopRows AS ( SELECT [FirstName] ,[LastName] ,[Education] ,[Occupation] ,[YearlyIncome] ,[Sales] ,[HireDate] ,ROW_NUMBER() OVER ( PARTITION BY [Occupation] ORDER BY [YearlyIncome] DESC ) AS [ROW NUMBER] FROM [Employee] ) SELECT * FROM TopRows WHERE TopRows.[ROW NUMBER] <= 2
Retrieve Last Record in SQL Server Example 2
In this example, we show you how to retrieve the last row in each Group using a subquery.
-- Select First Row in each group SELECT * FROM ( SELECT [FirstName] ,[LastName] ,[Education] ,[Occupation] ,[YearlyIncome] ,ROW_NUMBER() OVER ( PARTITION BY [Occupation] ORDER BY [YearlyIncome] DESC ) AS [ROW NUMBER] FROM [Customers] ) groups WHERE groups.[ROW NUMBER] = 1 ORDER BY groups.YearlyIncome DESC