sql查询 分组后 每组某字段值最大的一行所有列

2025-01-07 19:27:59
推荐回答(1个)
回答1:

按照员工ID分组,取出ID值最大的一行

1、第一个方法,需要考虑ID有重复值的问题,如果最大值存在重复值,那么结果也重复。

SELECT *
  FROM 员工信息变化表 T1
 WHERE id = (SELECT Max (id)
               FROM 员工信息变化表 T2
              WHERE T1.员工ID = T2.员工ID)

2、第二个方法:该语句是在SQL Server中编写的,应该不适用于MySQ和Oracle。排名函数是SQL Server2005中新增的功能,不适用SQL Server 2000

SELECT *
  FROM (SELECT row_number () OVER (PARTITION BY 员工ID ORDER BY id DESC)
                  AS ROW_NUM,
               *
          FROM 员工信息变化表) T1
 WHERE ROW_NUM = 1