Получение определенного числа по годам из базы данных доступа - PullRequest
0 голосов
/ 08 января 2019

Я очень хорошо разбираюсь в своем SQL, так что это может быть не так сложно, но я просто не могу его взломать.

У меня есть база данных с двумя таблицами - одна содержит информацию о пациентах, а одна посещает каждого пациента. Patient_ID - это уникальный идентификатор пациента, который используется в таблице посещений, и я пытаюсь определить количество отдельных пациентов и общее количество посещений, которые они имели (т. Е. Пациент А посетил 3 раза в 2018 году)

Я пытаюсь получить общее количество отдельных пациентов, которые посетили центр за ГОД (поле в таблице посещений), а также посмотреть информацию о пациенте из таблицы пациентов (пол, страна и т. Д.).

Я пробовал несколько подсчетов и разных функций, но не могу заставить что-либо работать. Ниже приведена одна из последних попыток, но отдельная функция на самом деле не показывает отличные значения (я что-то не так делаю с этим?) В этом сценарии. Это работает в других запросах ... Любая помощь будет принята с благодарностью.

SELECT DISTINCT Visits.Patient_ID, Patient.Gender, Patient.Village, Visits.Months_Of_Visit, Visits.Year
FROM Visits
INNER JOIN Patient ON Patient.Patient_ID=Visits.Patient_ID
WHERE Year='2018';

Ожидаемый результат:

Уникальный идентификатор пациента, пол пациента, деревня пациента в месяц и в год.

1 Ответ

0 голосов
/ 08 января 2019

Если вы хотите, чтобы каждый пациент посещал каждую деревню / месяц / год:

SELECT Count(*) AS CountVisits, Visits.Patient_ID, Gender, Village, Months_Of_Visit, [Year]
FROM Visits
INNER JOIN Patient ON Patient.Patient_ID=Visits.Patient_ID
GROUP BY Patient_ID, Gender, Village, Months_Of_Visit, [Year];

Если вы хотите количество пациентов DISTINCT на деревню / месяц / год:

Query1:

SELECT DISTINCT Visits.Patient_ID, Gender, Village, Months_Of_Visit, [Year]
FROM Visits
INNER JOIN Patient ON Patient.Patient_ID=Visits.Patient_ID;

Query2:

SELECT Count(*) AS CountPerVillage, Village, Months_Of_Visit, [Year] 
FROM Query1 GROUP BY Village, Months_Of_Visit, [Year];

Все в одном:

SELECT Count(*) AS CountPerVillage, Village, Months_Of_Visit, [Year] 
FROM (SELECT DISTINCT Visits.Patient_ID, Village, Months_Of_Visit, [Year]
      FROM Visits INNER JOIN Patient ON Patient.Patient_ID=Visits.Patient_ID) AS Query1 
GROUP BY Village, Months_Of_Visit, [Year];

Поскольку Год - зарезервированное слово (это встроенная функция), заключите его в [] или включите префикс имени таблицы в ссылку на поле.

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