2011-03-07 111 views
0

我需要設計一個在MS Access表中查找「重複項」的查詢。它們並不是真實的重複,因爲每個領域都不相同,但是在60天內兩次看病人的可能性很小,所以在這個時間範圍內的2個記錄可能是重複的。MS Access - 查詢設計幫助

在表中的相關列是: ID整數自動增量 patientid文本 proceduredate日期/時間

我想產生patientid的列表,其中proceduredate是在彼此的60天。我能找到的所有 「重複」 的列表,用下面的查詢:

SELECT * FROM tblProcedures WHERE patientid = ANY (SELECT tblProcedures.patientid FROM tblProcedures GROUP BY tblProcedures.patientid HAVING COUNT(tblProcedures .patientid)> 1) ORDER BY tblProcedures.patientid,tblProcedures.proceduredate DESC

但我不知道如何將結果限制涉及同一patientid其中proceduredate不到前面的過程60天的記錄。

回答

0

一種解決方案是將表與自身:

Select * 
From tblProcedures As P1 
    Inner Join tblProcedures As P2 
     On P2.PatientId = P1.PatientId 
       And P2.Id <> P1.Id 
Where Abs(DateDiff("d", P1.ProcedureDate, P2.ProcedureDate)) <= 60 
Order By P1.PatientId, P1.ProcedureDate Desc 
0

我想你想要的東西,如:

SELECT * 
FROM tblProcedures P1 
LEFT JOIN tblProcedures P2 
    ON P1.patientid = P2.patientid 
    AND P1.proceduredate < P2.proceduredate 
    AND DateDiff("d", P1.proceduredate, P2.Proceduredate) <= 60 
WHERE P2.patientid IS NOT NULL 
ORDER BY P1.patientid, P1.proceduredate DESC