Det lader til at parseren ikke kan lide det, på trods af at det er sintaktisk korrekt. Sandsynligvis blender de to sammenflettede og ordnede klausuler ham på en eller anden måde. Jeg gengav det.
Du kan bruge en analytisk funktion:
update table1 alf
set nextcontractid =
(SELECT min(contractid) keep (dense_rank first order by lasttradedate asc)
FROM table1copy alf2
WHERE alf2.assetid = alf.assetid
AND alf2.lasttradedate > alf.lasttradedate
)
where alf.complete = 0