MS Access SQL с самостоятельным объединением дает меньше результатов, чем исходная таблица. Что представляет собой набор записей, которых нет в запросе? - PullRequest
0 голосов
/ 10 июня 2019

Моя исходная таблица ( File05292019 ) содержит 22 904 записи.Я выполняю самостоятельное объединение на 3 полях, как показано ниже, и результат составляет 22 886.Почему это так?Что представляют собой недостающие записи?

SELECT File05292019.LastName, File05292019.FirstName, File05292019.SubscriberSocialSecurityNumber
FROM File05292019 
INNER JOIN File05292019 AS File05292019_1 
    ON (File05292019.SubscriberSocialSecurityNumber = File05292019_1.SubscriberSocialSecurityNumber) 
    AND (File05292019.LastName = File05292019_1.LastName) 
    AND (File05292019.FirstName = File05292019_1.FirstName)
GROUP BY File05292019.LastName, File05292019.FirstName, File05292019.SubscriberSocialSecurityNumber;

Ответы [ 3 ]

1 голос
/ 10 июня 2019

наличие группы по предполагает, что это означает, что у вас есть несколько строк с одинаковыми значениями

, вы можете попробовать uisng

  SELECT File05292019.LastName
    , File05292019.FirstName
    , File05292019.SubscriberSocialSecurityNumber
    count(*)
  FROM File05292019 
  GROUP BY File05292019.LastName
    , File05292019.FirstName
    , File05292019.SubscriberSocialSecurityNumber
  HAVING count(*) > 1 

для поиска этих строк

1 голос
/ 10 июня 2019

Пара возможностей:

  1. NULL значения существуют в полях JOIN: SubscriberSocialSecurityNumber , LastName и FirstName .Поскольку NULL = NULL является оператором False, объединения исключают пустые значения (не значащие объекты).

  2. Дублирующиеся значения в полях GROUP BY, где агрегация возвращает различные значения путем группировки.Добавьте агрегат COUNT(*) As RecordCount, чтобы увидеть, какие поля имеют более 1 значения.

    Возможно, подписчики изменили свои имена, но сохранили те же номера SSN;имена и SSN были введены неправильно;или несколько записей используют статус по умолчанию, например 999-99-9999?

1 голос
/ 10 июня 2019

Из-за группового оператора. Вы должны иметь дубликаты записей в наборе результатов

Проверьте, запустив этот запрос

SELECT File05292019.LastName, File05292019.FirstName, File05292019.SubscriberSocialSecurityNumber
FROM File05292019 
INNER JOIN File05292019 AS File05292019_1 
    ON (File05292019.SubscriberSocialSecurityNumber = File05292019_1.SubscriberSocialSecurityNumber) 
    AND (File05292019.LastName = File05292019_1.LastName) 
    AND (File05292019.FirstName = File05292019_1.FirstName)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...