Mai facem o încercare (porţiunile noi sunt scrise apăsat):
SELECT *, CASE WHEN DATA_PLATA<DATA_SCADENTA_RATA THEN 0
ELSE DATEDIFF(day,DATA_SCADENTA_RATA,ISNULL(DATA_PLATA,GETDATE())) END AS NR_ZILE_INTARZIERE
FROM (
SELECT ID_CLIENT, C.ID AS ID_CONTRACT, NUMAR AS NR_CONTRACT, C.DATA AS DATA_CONTRACT,
NR_RATA, NRCHIT, R.DATA AS DATA_PLATA, SUMA,
DATEADD(month, NR_RATA, DATA_PRIMEI_RATE) AS DATA_SCADENTA_RATA
FROM CONTRACTE C INNER JOIN RATE R ON C.ID=R.ID_CONTRACT
WHERE NR_RATA=(SELECT MAX(NR_RATA) FROM RATE R2 WHERE R2.ID_CONTRACT=C.ID)
) X
Dacă nu am nimerit ceea ce doreşti, te rog postează şi nişte date de test (preferabil sub formă de instrucţiuni INSERT INTO ... VALUES ...) şi rezultatele dorite pentru acel caz.
Răzvan