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