Это должно выглядеть так:
SELECT COUNT(DISTINCT CASE WHEN a.caption = 'abc' THEN a.id END) AS "Reject",
COUNT(DISTINCT CASE WHEN b.caption ='5' THEN b.id END) AS "Dup",
(COUNT(DISTINCT CASE WHEN a.caption = 'abc' THEN a.id END) -
COUNT(DISTINCT CASE WHEN b.caption ='5' THEN b.id END)
) as diff
FROM a LEFT JOIN
b re
ON a.id = b.id ;
Не используйте WITH (NOLOCK)
, если вы действительно не знаете, что делаете. Вы можете получить противоречивые данные.