从访问数据库中按年份获取不同的计数

时间:2019-01-07 21:45:03

标签: css database ms-access

我对我的SQL感到非常生锈,因此这可能并不那么复杂,但是我似乎无法破解它。

我有一个包含两个表的数据库-一个包含患者的详细信息,另一个包含每个患者的就诊次数。 Patient_ID是患者的唯一标识符,用在“访问”表中,我正尝试提取不同患者的数量以及他们已进行的访问的总数(即,患者A在2018年访问了3次)

我试图获取每个YEAR(每年访问次数)中某个中心就诊的不同患者的总数,并从“患者”表(性别,国家等)中查看有关患者的信息。

我尝试了几种计数和独特的功能,但是什么也无法工作。下面是最后的尝试之一,但是在这种情况下,distinct函数实际上并未显示出不同的值(我做错了吗?)。它确实可以在其他查​​询中使用...任何帮助将不胜感激。

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';

预期结果:

唯一的患者ID,患者性别,患者村庄PER月和PER年。

1 个答案:

答案 0 :(得分:1)

如果您希望每个患者访问每个村庄/月/年的次数:

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患者数量:

查询1:

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];

因为Year是保留字(它是一个内在函数),所以将其括在[]中或在字段引用中包括表名前缀。