最近,一位面试官问我一个问题,哪里有一位Table员工的列为employment_type,只有两个值,即'Permanent'&'承包商。现在,我们遇到了一个场景,我们发现由于一个错误,我们在本应输入"永久"的记录中输入了"承包商",同样的情况也适用于值为"永久"。
我的解决方案是编写一个PL-SQL存储过程&在游标中获取两个不同的集合,然后进行更新,最后进行DB刷新。
然而,期望是以单个SQL查询的形式出现的。我尝试了不同的嵌套查询组合,但运气不好。有人能帮我查询一下吗。
该表的主键是Employee_ID。
Gag!如果有基于集合的解决方案,请不要使用光标:
update employee
set employment_type = (case when status = 'Permanent' then 'Contract' else 'Permanent' end)
where employment_type in ('Permanent', 'Contract');