I have tested your query in mysql, postgresql, sql-server,oracle and it produced desired results.
Your Query
SELECT id
,SUM(CASE WHEN type = 'CR' THEN AMT
ELSE -AMT
END) AS BAL
FROM acct_table
GROUP BY id;
My Query
SELECT id
,SUM(CASE WHEN type = 'CR' THEN AMT
ELSE ( AMT * -1 )
END) AS BAL
FROM acct_table
GROUP BY id;
oracle test - http://sqlfiddle.com/#!4/0b8cb/1
mysql test- http://sqlfiddle.com/#!2/0b8cbd
postgresql test - http://sqlfiddle.com/#!15/0b8cb/1
Please verify that data in your table matches what you have shown in the question.