sql - 返回一行,最大日期来自两个不同表的两个不同列
问题描述
为 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 行。不确定这是我应该在初始查询中包含的内容,还是以后可以添加到报告中的内容。
解决方案
尝试ContactDate
从GROUP BY
子句中删除并使用max()
函数SELECT
:
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;
始终定义易于遵循/阅读和编写的表格。这假设ContactDate
为 resonbale 格式。
推荐阅读
- csv - AWK - 为基于多列(复合键)的重复数据处理大型 CSV(130 亿行)导致内存不足错误
- mysql - 长时间任务后,ActiveRecord 在简单更新期间抛出 Mysql2::Error::ConnectionError
- java - PKIX 路径构建失败:导入证书后
- python - 当你用 Cython 编译一个独立的可执行文件时,你可以使用其他 python 模块,如 pandas 和 numpy 吗?
- angular - 使用 Angular HttpClient 从 Rest 请求中获取“真实对象”(字段和方法)
- python - 发送到断开连接的套接字第一次成功
- go - 如何实时收集 Terraform 计划命令输出以显示在前端?
- javascript - 如何在 tinyMCE Javascript 上处理 404 图像 url
- android - 在 TextView Kotlin 中的 OCR 文本提取上搜索和可点击文本
- spring-cloud-config-server - 如何在不使用 spring.cloud.config.server.git.refreshRate 属性的情况下以编程方式从 spring 云配置服务器中的 git repo 中提取代码?