[英]SQL (MS ACCESS) Joining tables based on a maximum value
我正在嘗試在MS ACCESS中加入表。 有問題的表是PatientDB和DailyAssessment。
PatientDB表包含主鍵Patient_UID。
DailyAssessment表包含主鍵評估_UID。 它還包含一個Patient_UID字段,該字段在數據庫關系中鏈接到PatientDB。
我想要實現的是:
從PatientDB表中選擇滿足以下條件的所有記錄:Patient_Active = TRUE。
對於每個活動記錄,我想檢索DailyAssessments表中的最新條目。 到目前為止,我已經嘗試通過使用以下方法來實現:
Max(Assessment_UID)作為MaxOfAssessment_UID
然后使用該值嘗試聯接查詢,該查詢返回DailyAssessment表中的其他值。
SQL如下所示:
SELECT PatientDB.Patient_UID,
Max(DailyAssessment.Assessment_UID) AS
MaxOfAssessment_UID,
qryAssessmentData.Assessment_Date,
qryAssessmentData.Assessment_Time,
qryAssessmentData.Rescue_Analgesia, qryAssessmentData.
[Review By], qryAssessmentData.Assessment_Grade,
qryAssessmentData.Assessment_Notes
FROM (PatientDB INNER JOIN DailyAssessment ON
PatientDB.Patient_UID = DailyAssessment.Patient_UID)
INNER JOIN qryAssessmentData ON MaxOfAssessment_UID =
qryAssessmentData.Assessment_UID
GROUP BY PatientDB.Patient_UID,
qryAssessmentData.Assessment_Date,
qryAssessmentData.Assessment_Time,
qryAssessmentData.Rescue_Analgesia, qryAssessmentData.
[Review By], qryAssessmentData.Assessment_Grade,
qryAssessmentData.Assessment_Notes;
但是,我得到一個不支持JOIN表達式的錯誤,它突出顯示了以下內容:'JOIN qryAssessmentData ON MaxOfAssessment_UID = qryAssessmentData.Assessment_UID。
有誰知道如何實現此目標-是更簡單的方法,還是我做錯了什么? 我對SQL有相當基本的了解,因此希望您提出任何建議!
非常感謝。
您不能再次使用列別名-不能在SELECT
, WHERE
或ON
(好的,您可以在ORDER BY
)。
您還是不希望聚合。 您只需要過濾。
如果我理解正確,則您需要以下內容:
SELECT . . .
FROM PatientDB as p INNER JOIN
DailyAssessment as da
ON p.Patient_UID = da.Patient_UID
WHERE da.Assessment_UID = (SELECT MAX(da2.Assessment_UID)
FROM DailyAssessment da2
WHERE da2.Patient_UID = da.Patient_UID
);
筆記:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.