Acum am observat şi chestia cu "aceeasi luna (si an) la DataInregistrare pe primele 2 inregistrari". În cazul acesta ar fi:
UPDATE aaa SET Principal=0
WHERE DataInregistrare IN (
SELECT TOP 2 DataInregistrare FROM aaa b
WHERE b.CodContract=aaa.CodContract
AND DATEDIFF(month, DataInregistrare, (
SELECT MIN(DataInregistrare) FROM aaa c
WHERE c.CodContract=b.CodContract
))=0
ORDER BY DataInregistrare
)