Быстрое и грязное решение: замените пустое значение на пустое значение:
SELECT x,y,COUNT(DISTINCT Coalesce(z, 'dummy-null')) AS z_count
FROM tblA
GROUP BY x,y
HAVING (COUNT(DISTINCT Coalesce(z, 'dummy-null')) > 1)
Возможно, только если вы можете подделать пустое значение.
Редактировать: Полагаю, вы используете Count (отличный от z), потому что строки, имеющие x = y = z, не должны рассматриваться как дубликаты (по некоторым причинам).
В противном случае, чтобы получить ВСЕ дубликаты x = y, используйте:
SELECT x,y,COUNT(*) AS dup_count
FROM tblA
GROUP BY x,y
HAVING (COUNT(*) > 1)