Pues mira, he hecho todo el script para verificar que funcione y en efecto, funciona
Aquí te pongo los resultados de la tabla "t_articulos" antes de actualizar
codarticulo precio
----------- ---------------------------------------
a1 0.00
a2 0.00
a3 0.00
a4 0.00
a5 0.00
a6 0.00
Ahora la misma tabla, pero despues del update
codarticulo precio
----------- ---------------------------------------
a1 1000.00
a2 800.00
a3 70.00
a4 20.00
a5 400.00
a6 60.00
Y por ultimo, pues el script:
'------------------------------------------------
drop table t_articulos
drop table t_suministro
go
create table t_articulos
(
codarticulo varchar(5),
precio decimal(12,2)
)
create table t_suministro
(
codarticulo varchar(5),
precio decimal(12,2)
)
go
insert into t_articulos (codarticulo, precio)
values ('a1', 0)
insert into t_articulos (codarticulo, precio)
values ('a2', 0)
insert into t_articulos (codarticulo, precio)
values ('a3', 0)
insert into t_articulos (codarticulo, precio)
values ('a4', 0)
insert into t_articulos (codarticulo, precio)
values ('a5', 0)
insert into t_articulos (codarticulo, precio)
values ('a6', 0)
go
insert into t_suministro (codarticulo, precio)
values ('a1', 1000)
insert into t_suministro (codarticulo, precio)
values ('a1', 100)
insert into t_suministro (codarticulo, precio)
values ('a1', 200)
insert into t_suministro (codarticulo, precio)
values ('a1', 300)
insert into t_suministro (codarticulo, precio)
values ('a2', 800)
insert into t_suministro (codarticulo, precio)
values ('a2', 400)
insert into t_suministro (codarticulo, precio)
values ('a3', 50)
insert into t_suministro (codarticulo, precio)
values ('a3', 70)
insert into t_suministro (codarticulo, precio)
values ('a4', 20)
insert into t_suministro (codarticulo, precio)
values ('a4', 10)
insert into t_suministro (codarticulo, precio)
values ('a5', 400)
insert into t_suministro (codarticulo, precio)
values ('a5', 50)
insert into t_suministro (codarticulo, precio)
values ('a6', 60)
go
select * from t_articulos
go
update x
set x.precio = (select max(t.precio) from t_suministro t where t.codarticulo = x.codarticulo group by t.codarticulo)
from t_articulos x
go
select * from t_articulos
go
-----------------------------------------------'
Veo que estas corriendo sobre Oracle y pues si acepta subconsultas, quiza tengas que configurar algo o al parecer lo que tienes mal son los alias que no estan definidos en la subconsulta.
Salu2...