Does TableB only have one row per PK?
If so, something lige this might work for you:
select b.pk
,sum(a.monvalue) as tablea_monvalue
,avg(b.monvalue) as tableb_monvalue
from tableb as b
left outer join tablea as a
on a.pk=b.pk
group by b.pk
having avg(b.monvalue)<>isnull(sum(monvalue),0)
;
Whether a single row or multiple, this code will check for non-matches from the sum of TableA to the max value of TableB.
SELECT A.*, B.*
FROM
(SELECT PK, SUM(monValue) AS monValue FROM TableA GROUP BY PK) AS A
INNER JOIN
(SELECT PK, MAX(monValue) AS monValue FROM TableB GROUP BY PK) AS B
ON B.PK = A.PK AND B.monValue <> A.monValue