从访问数据库中按年份获取不同的计数
Posted
技术标签:
【中文标题】从访问数据库中按年份获取不同的计数【英文标题】:Getting a distinct count by year from an access database 【发布时间】:2019-01-07 21:45:03 【问题描述】:我的 SQL 很生疏,所以这可能不是那么复杂,但我似乎无法破解它。
我有一个包含两张表的数据库 - 一张包含患者的详细信息,另一张包含每位患者的就诊情况。 Patient_ID 是患者的唯一标识符,用于访问表中,我正在尝试提取不同患者的数量和他们的就诊总数(即患者 A 在 2018 年访问了 3 次)
我正在尝试获取每年访问过一个中心的不同个体患者的总数(访问表中的字段),并从患者表(性别、国家/地区等)中查看有关患者的信息。
我尝试了几个 count 和 distinct 函数,但都无法正常工作。下面是最后的尝试之一,但在这种情况下, 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、患者性别、患者村。
【问题讨论】:
你试过“GROUP BY”子句吗? 样本数据和期望的结果会有所帮助。 【参考方案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;
查询2:
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 是保留字(它是一个内在函数),请用 [ ] 括起来或在字段引用中包含表名前缀。
【讨论】:
以上是关于从访问数据库中按年份获取不同的计数的主要内容,如果未能解决你的问题,请参考以下文章