MS Total Access Query с функцией подсчета Вопрос - PullRequest
0 голосов
/ 05 декабря 2018

У меня есть таблица выборов членов.Я пытаюсь определить количество записей, которые имеют PERSON_TYPE «Ребенок», которые имеют тот же Subscriber_number (который будет SSN подписывающихся родителей) и тот же [Date of Birth], но другой Member_ID (который будет ихПЛА).В основном я ищу близнецов, тройняшек и т. Д. Я не очень хорошо справляюсь с запросами Totalals в Ms Access, но моя попытка ниже.Он возвращает ноль записей, но я знаю, что в таблице есть несколько наборов близнецов и триплетов.

SELECT ClientTable1.PERSON_TYPE, ClientTable1.Subscriber_number, ClientTable1.[Date of Birth], Count(ClientTable1.[Date of Birth]) AS [CountOfDate of Birth]
FROM ClientTable1
WHERE (((ClientTable1.Member_ID)<>[ClientTable1].[Member_ID]))
GROUP BY ClientTable1.PERSON_TYPE, ClientTable1.Subscriber_number, ClientTable1.[Date of Birth]
HAVING (((ClientTable1.PERSON_TYPE)="Child"));

Ответы [ 2 ]

0 голосов
/ 05 декабря 2018

Вы можете использовать следующий запрос, и это даст вам подробную информацию о близнецах / тройнях

select t1.PERSON_TYPE, t1.Subscriber_number,
 t1.[Date of Birth], t1.Member_ID from ClientTable1 t1
 join ClientTable1 t2 on t1.Subscriber_number=t2.Subscriber_number
    where t1.Subscriber_number=t2.Subscriber_number
    and t1.[Date of Birth]=t2.[Date of Birth]
    and t1.Member_ID<>t2.Member_ID
order by t1.Subscriber_number
0 голосов
/ 05 декабря 2018

ваше where условие неверно,

((ClientTable1.Member_ID)<>[ClientTable1].[Member_ID]) условие никогда не будет истинным.

вы спрашиваете об одном и том же поле, поэтому его нельзя нажать.

вместо этого используйте следующий код:

SELECT ct1.PERSON_TYPE, ct1.Subscriber_number, ct1.[Date of Birth], Count(ct1.[Date of Birth]) AS [CountOfDate of Birth]
FROM ClientTable1 ct1
INNER JOIN ClientTable1 ct2
    ON ct1.PERSON_TYPE = ct2.PERSON_TYPE
    AND ct1.Subscriber_number = ct2.Subscriber_number
    AND ct1.[Date of Birth] = ct2.[Date of Birth]
WHERE (((ct1.Member_ID)<>ct2.[Member_ID]))
GROUP BY ct1.PERSON_TYPE, ct1.Subscriber_number, ct1.[Date of Birth]
HAVING (((ct1.PERSON_TYPE)="Child"));

. Таким образом, вы используете внутреннее соединение для проверки нескольких записей в соответствии с отношением между таблицами

и проверкой условия where, чтоэто не то же самое Member_ID

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...