У меня есть базовая таблица, в которой я хочу обновить 5 значений на основе значений COALESCED из различных других таблиц (производное значение). В SQL Server (TSQL) я бы сделал что-то вроде этого:
Update tab1
set col1 = COALESCE(tab2.val1,tab3.val1,tab4.val1),
col2 = COALESCE(tab2.val2,tab3.val3,tab4.val4),
col3 = COALESCE(tab2.val3,tab3.val3,tab4.val3)
from tab1
left outer join tab2 on tab1.joincol = tab2.joincol
left outer join tab3 on tab1.joincol = tab3.joincol
left outer join tab4 on tab1.joincol = tab4.joincol
Я прочитал тонны постов о том, как это сделать в Oracle, но я не могу заставить ЛЮБОЙ из них работать в вышеуказанном сценарии! Слияние не будет работать, потому что в tab1 может быть несколько строк, которые объединяются и нуждаются в обновлении на основе полученных значений. Когда я пытаюсь использовать «update (select ...) set», я получаю «ORA-01732: операция манипулирования данными недопустима в этом представлении», даже если никакие представления не используются.
Пожалуйста, помогите! В этот день я бился головой! На самом деле меня не привлекает Oracle!