Проблема здесь такая же, как вы описываете: вы проверяете уникальность всего ряда, ваш набор данных в итоге выглядит так:
CarItemId CarId
--------- -----
1 1
1 2
1 3
2 1
2 2
3 3
Вам нужны уникальные CarItemIds без дубликатов, а это значит, что вы также хотите уникальные CarIds ---- хорошо, у вас есть 3 CarIds, какой из них выбрать SQL Server?
У вас нет особого выбора, кроме как суммировать лишние CarIds:
SELECT tblcaritem.caritemid, max(tblcar.icarid)
FROM tblcaritem
INNER JOIN tblprivatecar ON tblcaritem.partid = tblprivatecar.partid
INNER JOIN tblcar ON tblcaritem.carid = tblcar.carid
WHERE tblcaritem.userid=72
GROUP BY tblcaritem.caritemid