Я не вижу ничего плохого в использовании COUNT () в этом случае. Хотя это не имеет значения, вы можете попробовать убрать все скобки в предложении WHERE. Вы также можете попробовать использовать COUNT (*) вместо COUNT (A.ID), просто чтобы посмотреть, дает ли он другие результаты.
В любом случае, исходя из вашего описания цели запроса, я не думаю, что запрос будет выполнять то, что вы хотели. Если запрос должен возвращать строки, где поле не является ни пустым, ни пустым, я считаю, что ваше предложение WHERE должно быть
WHERE A.VARCHARFIELD1 IS NOT NULL AND
A.VARCHARFIELD1 <> ''
С 'ИЛИ' там, как было написано изначально, я думаю, что вы вернетесь к каждой строке в таблице, где A.VARCHARFIELD1 НЕ НЕДЕЙСТВИТЕЛЕН, так как предикат "field NOT NULL" будет разрешен во всех значениях, отличных от NULL, и поскольку два предиката объединены с помощью ИЛИ, второй предикат не имеет значения.
Надеюсь, это поможет.