Sql 返回一行,最大日期来自两个不同表的两个不同列

Sql 返回一行,最大日期来自两个不同表的两个不同列,sql,ssrs-2008,reportbuilder3.0,Sql,Ssrs 2008,Reportbuilder3.0,使用sql server 08 R2的报表生成器3.0。试图从2个不同表中的2个不同列中获取最近的日期,但我得到的是4行而不是1行。在下图中,每个患者应有一行 我使用的脚本是: SELECT "Patient"."PatientID", "PatientLastName", "PatientFirstName", "DischargeDate", "PatVisitPayable"."ContactDate" FROM "BTI"."Patient" JOIN "BTI"."PatAdmiss

使用sql server 08 R2的报表生成器3.0。试图从2个不同表中的2个不同列中获取最近的日期,但我得到的是4行而不是1行。在下图中,每个患者应有一行

我使用的脚本是:

SELECT "Patient"."PatientID", "PatientLastName", "PatientFirstName", "DischargeDate", "PatVisitPayable"."ContactDate"
FROM "BTI"."Patient" 
JOIN "BTI"."PatAdmissions" ON "Patient"."PatientID" = "PatAdmissions"."PatientID" 
JOIN "BTI"."PatVisitPayable" ON "PatAdmissions"."PatientID" = "PatVisitPayable"."PatientID" 
JOIN "BTI"."PatAdmissionDivision" ON "PatAdmissions"."AdmissionID" = "PatAdmissionDivision"."AdmissionID"
GROUP BY "Patient"."PatientID", "PatientLastName", "PatientFirstName", "DischargeDate", "ContactDate"
我已经尝试在select语句中添加max(contactdate)和max(dischargedate),但仍然得到4行。我不确定这是我应该在初始查询中包含的内容,还是我可以在以后添加到报告中的内容


尝试从
分组依据
子句中删除
联系人日期
,并在
选择中使用
max()
函数:

SELECT pt.PatientID, 
       pt.PatientLastName, pt.PatientFirstName, pt.DischargeDate,                          
       MAX(ContactDate) as ContactDate
FROM BTI.Patient pt
JOIN BTI.PatAdmissions pa ON pt.PatientID = pa.PatientID
JOIN BTI.PatVisitPayable py ON pa.PatientID = py.PatientID 
JOIN BTI.PatAdmissionDivision pd ON pa.AdmissionID = pd.AdmissionID
GROUP BY pt.PatientID, pt.PatientLastName, 
         pt.PatientFirstName, pt.DischargeDate;
始终定义易于理解/读写的表格alise。
这假设联系人日期为resonbale格式

你真的想要单独的联系日期和出院日期吗?对于一个患者来说,它们通常不会相互关联吗?日期与两个不同的事件有关。它们与患者的同一事件有关,但不幸的是,我们的流程和我们用于电子病历的程序没有将联系人与事件/入院联系起来,因为这是在患者出院后完成的。确实如此!非常感谢。