Thanks again...that appears to be returning the correct results. I did try making the other SUM change as you specified as I think in the end it will be easier for me to generate this query from my program. However, my attempt ended up yielding more rows than I expected (I wrapped a SELECT DISTINCT...around it but it didn't make any difference). I probably misunderstood what you meant. Here's my attempt:
SELECT A.ID
FROM A
LEFT OUTER
JOIN B
ON B.ID = A.ID
LEFT OUTER
JOIN ( SELECT ID
, SUM(TranAmount) AS C_amount
FROM C
GROUP
BY ID ) AS CSUM
ON CSUM.ID = A.ID + B.CSEQS
LEFT OUTER
JOIN ( SELECT ID
, SUM(Amount) AS D_amount
FROM D
GROUP
BY ID ) AS DSUM
ON DSUM.ID = A.ID
GROUP
BY A.ID, DSUM.D_amount, CSUM.C_amount
HAVING COALESCE(DSUM.D_amount,0) - COALESCE(CSUM.C_amount,0)
BETWEEN 100 AND 200