更新一个特定的行,其中相同的员工ID在sql中有多个条目

时间:2017-12-31 07:11:58

标签: sql sql-server

我是sql的新手并且遇到重复条目更新问题,任何帮助将不胜感激。 我有一个表调用员工历史,它有empid,roleid,rolestartdate,roleenddate列。 在表中,基于角色分配和取消分配,一个empid有多个条目。 我需要根据以下条件更新一个empid行。 选择一个empid行,其中rolestartdate是Max date,如果它返回多行,请检查roleid列并根据Max roleid进行过滤。 它还应该返回那些只有一个条目的empid行。 谢谢

1 个答案:

答案 0 :(得分:0)

您可以使用Row_Number窗口功能。

;with cte as
(
select *, 
       Rn = row_number()over(partition by empid order by rolestartdate desc, roleid desc) 
from EmployeeHistory
)
/* 
--To check the records which will be updated
Select * from cte where Rn = 1
*/
update cte 
   set update_column = 'whatever value'
   where Rn = 1