- tabla A con los campos a1, a2, a3, a4 y a5
- subconsulta B (que a su vez está formada por otra subconsulta) con los campos b1, b2, b3, b4, b5
y necesito lo siguiente:
* actualizar a4 con b4 y a5 con b5; la condición de join es a1=b1 and a2=b2 and a3=b3
he probado con merge pero me da error ORA-00905: falta una palabra clave si es que no adiciono el insert y values (pero lo que yo quiero es sólo hacer UPDATE. no tengo mucha experiencia en sql, en todo caso como haría consulta con un UPDATE normal?
Cita:
NOTA: es_subconsulta_probada es una subconsulta que me devuelve los valores deseados; esta es la complejidad.MERGE INTO A
USING (SELECT b1, b2, b3, b4, b5 FROM es_subconsulta_probada) B
ON(a.A1 = b.b1 and a.a2 = b.b2 and a.a3 = b.b3)
WHEN MATCHED THEN
UPDATE SET a.a4 = b.b4,
a.a5 = b.b5
USING (SELECT b1, b2, b3, b4, b5 FROM es_subconsulta_probada) B
ON(a.A1 = b.b1 and a.a2 = b.b2 and a.a3 = b.b3)
WHEN MATCHED THEN
UPDATE SET a.a4 = b.b4,
a.a5 = b.b5
es_subconsulta_probada podría contener algo como esto (lo que debe de importar es que devuelve los campos que necesitamos):
SELECT b1, b2, b3, b4, b5
FROM XXX,
(
SELECT S.b1, S.b2, S.b3, S.b4, S.b5
FROM OTRATABLA S, tabl666 t
WHERE t.tabl='L026'
and s.yyy = t.yyy
GROUPBY S.xxx, S.yyy
) BBB
WHERE XXX.abc = S.abc