2013-11-04 51 views
0

,我的工作是MS Access 2007中使用包含以下列的查询返回多个列: PATIENT_NUMBER DATE_OF_VISIT BMI查询或SQL与一个唯一列

查询包含多个DATE_OF_VISITS(与相关BMI)为每个PATIENT_NUMBER。我一直在尝试使用SQL为我提供一份不重复的最近访问日期和BMI的患者名单。

到目前为止,我可以得到最最近访问每个病人的最新名单,但是当我尝试并获得BMI以及我开始得到患者多个实例(因为他们的BMI随时间波动)

+0

由于您有一个查询会返回每个患者的最近访问次数,因此将其用作子查询,您将其加入原始表以检索每次访问的BMI。 – HansUp

回答

1

它总是有助于包含您在问题中尝试过的任何查询。我认为你需要这样的东西:

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; 

这假设没有重复日期为同一个病人。如果是这样,你需要一些其他方法来消除歧义。

+0

我尝试了您的建议代码,并假定“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子句中的语法错误” –

+0

访问不会让您使用'JOIN'而不指定连接的类型。我想你想要'INNER JOIN'在这里。 – HansUp

+0

@HansUp。 。 。谢谢。 –