在本文中,我们将通过示例介绍如何在 SQL Server 中选择具有列最大值的行。为此,我们将使用下面显示的数据

在 SQL Server 中选择具有列最大值的行 示例 1
如果您要返回组列以及最大值的列,则可以使用以下语句。正如您所看到的,我们使用了 Max 函数以及 Group By。
SELECT Occupation
,MAX([Sales]) AS MaxSale
FROM [Employee]
GROUP BY Occupation

选择具有列最大值的行 示例 2
在此示例中,我们将展示如何选择具有最大值以及其他列的行。如果您想返回其他列(非分组列),这会很有用。
对于这个 SQL Server 示例,我们使用了 Inner Join 将 employee 表与其自身连接起来。
SELECT Emp.[EmpID]
,Emp.[FirstName]
,Emp.[LastName]
,Emp.[Education]
,Emp.[Occupation]
,Emp.[YearlyIncome]
,Emp.[Sales]
,Emp.[HireDate]
FROM [Employee] AS Emp
INNER JOIN
(
SELECT Occupation
,MAX([Sales]) AS Sales
FROM [Employee]
GROUP BY Occupation
) AS Emp2
ON Emp.Occupation = Emp2.Occupation AND Emp.Sales = Emp2.Sales

选择具有列最大值的行 示例 3
这是另一种方法。在这里,我们在 Where Clause 中使用了 Select statement。
SELECT * FROM [Employee] AS Emp1 WHERE Sales = ( SELECT MAX([Sales]) AS Sales FROM [Employee] AS Emp2 WHERE Emp1.Occupation = Emp2.Occupation )

在此示例中,我们使用了 Left Join 和 Is Null。
SELECT Emp.* FROM [Employee] AS Emp LEFT JOIN [Employee] AS Emp2 ON Emp.Occupation = Emp2.Occupation AND Emp.Sales < Emp2.Sales WHERE Emp2.EmpID IS NULL
