我的一道考题有点问题,我在考试中没有答对,但我想知道我遗漏了什么。
问题是:
列出每个患者的第一个诊断,显示患者的姓名、诊断代码和诊断日期。如果患者最早有两个或两个以上的诊断,可以只显示其中一个诊断。需要的表格:遭遇,病人,遭遇诊断,诊断。结果集应该有四行。
以下是我所拥有的:
select p.patient_nm, max(e.start_dts)
from edw_emr_ods.patients p
join edw_emr_ods.encounters e
on p.patient_id = e.patient_id
join edw_emr_ods.encounter_diagnoses ed
on e.encounter_id = ed.encounter_id
left join edw_emr_ods.diagnoses d
on ed.encounter_diagnoses_id = d.diagnosis_id
group by p.patient_nm
order by p.patient_nm asc
如您所见,我没有包括诊断代码(更多信息(稍后)返回4行:
当我尝试添加诊断代码时,我得到的“column'edw\u emr\u ods.diagnostics.code”在选择列表中无效,因为它既不包含在聚合函数中,也不包含在group by子句中。”要删除它,唯一的方法是在group by中添加代码,因为没有它无法将代码和名称一起排序。但这会为每个患者返回太多行。
所以我的问题是“我如何只提取最近诊断的名字,日期和代码?”
1条答案
按热度按时间nzk0hqpo1#
为什么不使用
rownumber() over(...)
回答您的问题:“如何仅获取最近诊断的姓名、日期和代码: