
表结构是这样的,现在有如下要求:查询所有字段,如果ename有重复,那保留ename中包含最大departid所对应的数据

这样的话,取不到ID

这样的话重复
求一个两全其美的方法
------解决思路----------------------
SELECT eid,ename,departid
FROM (SELECT *,
ROW_NUMBER() OVER (PARTITION BY ename
ORDER BY departid DESC
) n
FROM employee
) e
WHERE n = 1
------解决思路----------------------
select eid,ename,departid from (
select *,row_number() over(partition by ename order by departid desc ) as rId from employee
) as a where rId=1