,我的工作是MS Access 2007中使用包含以下列的查询返回多个列: PATIENT_NUMBER DATE_OF_VISIT BMI查询或SQL与一个唯一列
查询包含多个DATE_OF_VISITS(与相关BMI)为每个PATIENT_NUMBER。我一直在尝试使用SQL为我提供一份不重复的最近访问日期和BMI的患者名单。
到目前为止,我可以得到最最近访问每个病人的最新名单,但是当我尝试并获得BMI以及我开始得到患者多个实例(因为他们的BMI随时间波动)
,我的工作是MS Access 2007中使用包含以下列的查询返回多个列: PATIENT_NUMBER DATE_OF_VISIT BMI查询或SQL与一个唯一列
查询包含多个DATE_OF_VISITS(与相关BMI)为每个PATIENT_NUMBER。我一直在尝试使用SQL为我提供一份不重复的最近访问日期和BMI的患者名单。
到目前为止,我可以得到最最近访问每个病人的最新名单,但是当我尝试并获得BMI以及我开始得到患者多个实例(因为他们的BMI随时间波动)
它总是有助于包含您在问题中尝试过的任何查询。我认为你需要这样的东西:
select t.PATIENT_NUMBER, t.DATE_OF_VISIT, t.BMI
from t inner join
(select PATIENT_NUMBER, max(DATE_OF_VISIT) as maxdate
from t
group by PATIENT_NUMBER
) tmax
on t.PATIENT_NUMBER = tmax.PATIENT_NUMBER and t.DATE_OF_VISIT = tmax.maxdate;
这假设没有重复日期为同一个病人。如果是这样,你需要一些其他方法来消除歧义。
我尝试了您的建议代码,并假定“t”是基本查询名称的占位符。我的格式如下:SELECT [BBHS第二年多重BMI] .PATIENT_NUMBER,[BBHS第二年多重BMI] .DATE_OF_VISIT,[BBHS第二年多重BMI] .BMI FROM [BBHS第二年多重BMI] JOIN选择PATIENT_NUMBER,max(DATE_OF_VISIT)AS maxdate FROM [BBHS第二年多重BMI])tmax ON [BBHS第二年多重BMI] .PATIENT_NUMBER = tmax.PATIENT_NUMBER和[BBHS第二年多重BMI] .DATE_OF_VISIT = tmax.maxdate;但是,我得到错误“FROM子句中的语法错误” –
访问不会让您使用'JOIN'而不指定连接的类型。我想你想要'INNER JOIN'在这里。 – HansUp
@HansUp。 。 。谢谢。 –
由于您有一个查询会返回每个患者的最近访问次数,因此将其用作子查询,您将其加入原始表以检索每次访问的BMI。 – HansUp