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