如何将一列中的两个值与表中的所有记录进行交换



最近,一位面试官问我一个问题,哪里有一位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');

最新更新