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

在 SQL Server 中检索每个组的最后一条记录 示例 1
在此示例中,我们使用了CTE和ROW_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

在 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
