In first place you can create a view that contains the sum of the transactions with a code like:
CREATE VIEW [dbo].[bankDataGrouped]
AS
SELECT ID, Name, Type, CustId, SUM(Amt) AS amt
FROM dbo.BankData
GROUP BY ID, Name, Type, CustId
ORDER BY ID, Name, Type, CustId
GO
(Then you can query 'bankDataGrouped' to obtein the sum of the records)
Then instead of use bankdata use bankDataGrouped with
SELECT b1.*,
CASE WHEN (b1.amt=b2.amt) THEN 'Y'
ELSE 'N' END AS 'Balance',
customer.address
FROM bankdatagrouped b1
JOIN bankdatagrouped b2
ON b1.id=b2.id AND (b1.type<>b2.type)
JOIN customer
ON b1.custid=customer.custid
you can JOIN both with bankdatagrouped and customer.
If this works please mark my anwser as 'anwser accepted'.