用于更新的oracle游标或循环语句

xj3cbfub  于 2023-06-29  发布在  Oracle
关注(0)|答案(1)|浏览(92)

我有员工表,它保持与活动数据指标的历史,最近我们提供了新的员工ID和员工表得到了更新与活动数据指标Y为所有新的员工ID更新,其中旧的员工ID得到了'N'
现在我想用新的emp id更新旧的emp id,我有大约10 K的记录与此scenrio,所以有什么办法,我可以更新所有旧的emp id与新的id?有什么办法可以更新吗?我只想更新emp id列
数据在:
| UNQ ID| EMP ID|更新日期|活动数据| Active Data |
| - -----|- -----|- -----|- -----| ------------ |
| q1212|一二三五六|2022年11月4日|Y轴| Y |
| q1212| 00123| 2019 - 03 - 13 00:00:00|不适用| N |
| q1212| 00123| 2019年12月12日|不适用| N |
我想要的数据:
| UNQ ID| EMP ID|更新日期|活动数据| Active Data |
| - -----|- -----|- -----|- -----| ------------ |
| q1212|一二三五六|2022年11月4日|Y轴| Y |
| q1212|一二三五六|2019 - 03 - 13 00:00:00|不适用| N |
| q1212|一二三五六|2019年12月12日|不适用| N |
由于我是Oracle的新手,我不知道如何做到这一点

mctunoxg

mctunoxg1#

假设unq_id唯一地标识了您的员工,那么简单的更新应该足够了,只需为相同的unq_id获取emp_id,其中标志为Y:

UPDATE employee e1
   SET emp_id = (SELECT MAX(e2.emp_id)
                   FROM employee e2
                  WHERE e2.unq_id = e1.unq_id
                    AND e2.active_data = 'Y')
 WHERE active_data = 'N'

相关问题