Вы не можете динамически выбирать, какой столбец обновлять, но вместо этого вы можете выполнить несколько условных присваиваний, например:
update mytable
set
col_1 = decode(file_type, 'ABC', 'Y', col_1),
col_2 = decode(file_type, 'CDE', 'Y', col_2),
col_3 = decode(file_type, 'EFG', 'Y', col_3)
where id = 12345
Обновляется только тот столбец, где параметр соответствует целевому значению, в противном случае исходное значение переназначен (так что это не работает).
Может быть проще следовать с помощью case
выражений:
update mytable
set
col_1 = case when file_type = 'ABC' then 'Y' else col_1 end,
col_2 = case when file_type = 'CDE' then 'Y' else col_1 end,
col_3 = case when file_type = 'EFG' then 'Y' else col_1 end,
where id = 12345