2013-11-04 83 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。 。 。謝謝。 –