Det verkar som om parsern inte gillar det, trots att den är sintaktisk korrekt. Förmodligen förblindar de två omvandlade och ordnade klausulerna honom på något sätt. Jag återgav det.
Du kan använda 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