Граф отличается от удержания NULL - PullRequest
0 голосов
/ 07 октября 2010

Я использую SQL 2005 и у меня простой запрос, как показано ниже. Ловушки дублируются:

SELECT x,y,COUNT(DISTINCT z) AS z_count 
FROM tblA 
GROUP BY x,y 
HAVING (COUNT(DISTINCT z) > 1)

Теперь проблема в том, что в этом столбце z иногда используются значения NULL, которые игнорируются подсчетом различного значения.Таким образом, дубликаты, имеющие z в качестве NULL в одной записи и не-NULL в другой, не попадают в ловушку.

Может кто-нибудь подсказать, как мне обойти это с помощью одного запроса?

1 Ответ

0 голосов
/ 07 октября 2010

Быстрое и грязное решение: замените пустое значение на пустое значение:

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...