在 SQL Server 中检索每个组的最后一条记录

在本文中,我们将通过一个示例向您展示如何在 SQL Server 中检索每个组的最后一条记录。为此,我们将使用下面显示的数据。

Employee Table 1

在 SQL Server 中检索每个组的最后一条记录 示例 1

在此示例中,我们使用了CTEROW_NUMBER函数来为分区中的每条记录分配排名。您还可以根据需要使用其余的排名函数

  • 首先,按职业对数据进行分区,并使用年收入分配排名号。
  • 接下来,它将从每个SQL Server组中选择最后一条记录。
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 for each Group in SQL Server 2

在 SQL Server 中检索最后一条记录 示例 2

在此示例中,我们展示了如何使用子查询来检索每个中的最后一行。

-- 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
Retrieve Last Record for each Group in SQL Server 3