如何根据最新日期从多个记录中获取特定记录

htzpubme  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(273)

我正在尝试创建一个sql查询,其中显示表中记录的最新或没有“dateofspecimencollection”。下面我有两张表,分别是“拭子”和“联系人跟踪头”。

SELECT  CTH.AutoID, CTH.Firstname, CTH.Lastname, SW.DateOfSpecimenCollection 
FROM ContactTracingHeader AS CTH LEFT JOIN Swab AS SW ON CTH.AutoID = SW.PatientNo
WHERE SW.DateOfSpecimenCollection = (SELECT FIRST(DateOfSpecimenCollection) 
FROM Swab ORDER BY DateOfSpecimenCollection ASC);

我试图输出的是,当“swab”表中的一个用户输入多个相同的“patientno”时,它将只显示一个“patientno”记录,其中包含最新的“dateofspecimencollection”及其“firstname”和“lastname”,并且还将“contacttracingheader”表中没有“dateofspecimencollection”的某个患者的记录输出到“swab”表,这也是我使用左连接的原因。我很抱歉,因为我是sql ms access的初学者,而且由于我的英语不好和重复的问题,我的解释也不好。提前谢谢!
这是sql的可视化表示:
表contacttracingheader:

|AutoID|Firstname|Lastname|

   1      John     Smith

   2      Felix    James

台拭子:

|PatientNo|DateOfSpecimenCollection|

      1           07/21/2020

      1           07/22/2020

      1           08/01/2020

我尝试进行的查询输出:

|AutoID|Firstname|Lastname|DateOfSpecimenCollection|

    1     John      Smith       08/01/2020

    2     Felix     James        (Blank)

因为“费利克斯·詹姆斯”在表拭子中没有任何记录,所以他的“样本收集日期”是空的或者什么都没有。

7kqas0il

7kqas0il1#

可以用子查询替换结果集中的任何列。用它来获取最新信息。您真正的查询是关于人的,所以请从主查询中选择。

SELECT  CTH.AutoID, 
        CTH.Firstname, 
        CTH.Lastname, 
        (
            SELECT MAX(DateOfSpecimenCollection)
            FROM Swab
            WHERE Swab.PatientNo = CTH.AutoID
        )  LatestDateOfSpecimenCollection
FROM ContactTracingHeader CTH

如果您只想包括有一个或多个拭子的患者,请添加以下内容:

WHERE EXISTS (SELECT 0 FROM Swab WHERE PatientNo = CTH.AutoID)

相关问题