【问题标题】:returning one row, with the max date from two different columns from two different tables返回一行,最大日期来自两个不同表的两个不同列
【发布时间】:2018-04-30 14:19:46
【问题描述】:

为 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"

我尝试将 max(contactdate) 和 max(dischargedate) 放在 select 语句中,但仍然得到 4 行。不确定这是我应该在初始查询中包含的内容还是以后可以添加到报告中的内容。

4 rows for one patient

【问题讨论】:

  • 您真的想要单独的联系日期和出院日期吗?对于单个患者,它们通常不会相互关联吗?
  • 日期与 2 个不同的事件有关。它们与患者的同一事件相关,但不幸的是,我们用于电子病历的流程和程序并未将联系人与事件/入院联系起来,因为它是在患者出院后完成的。

标签: sql ssrs-2008 reportbuilder3.0


【解决方案1】:

尝试从GROUP BY 子句中删除ContactDate 并在SELECT 中使用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。 这假定 ContactDate 采用 resonbale 格式。

【讨论】:

  • 做到了!谢谢。
猜你喜欢
  • 2018-05-29
  • 1970-01-01
  • 2023-01-31
  • 1970-01-01
  • 1970-01-01
  • 2017-04-17
  • 1970-01-01
  • 2020-07-19
  • 1970-01-01
相关资源
最近更新 更多