per SQL Server 2005 (ho provato direttamente)

UPDATE debiti
SET debiti.debito = d2.totale
FROM debiti, debiti AS d2
WHERE d2.codice = debiti.codice
AND debiti.anno = 2008 AND d2.anno = 2007

oppure

UPDATE debiti
SET debiti.debito = d2.totale
FROM debiti INNER JOIN debiti AS d2
ON d2.codice = debiti.codice
WHERE debiti.anno = 2008 AND d2.anno = 2007

che sono la stessa cosa con il join scritto in maniera diversa