The problem is that the decimal type ignores the thousant separators (,). Only the money data type handle this.
Try to cast first in money and then in decimal
SELECT f1, f2, SUM(Convert(decimal(20,2), cast(f3 as money)))
FROM t1
GROUP BY f1, f2
ORDER BY f1, f2