【发布时间】:2018-01-04 10:43:43
【问题描述】:
编辑
我不能只用patient_idgroup by,我会得到sql_mode=only_full_group_by...的错误
我有以下查询,可帮助我获取所有被诊断患有糖尿病的患者的名单:
SELECT t1.patient_id,
CONVERT(aes_decrypt(t4.patient_name_en, 'key1') USING utf8mb4) as patient_name_en,
t3.date_of_visit as date_of_visit,
t2.diagnosis_name,
max(ifnull(t5.date_of_assessment, 'N/A')) as date_of_assessment,
ifnull(t5.assessment_result, 0) as assessment_result
FROM consultation t1
LEFT JOIN diagnosis t2 ON t1.diagnosis_id = t2.diagnosis_id
LEFT JOIN visit t3 ON t3.visit_id = t1.visit_id
LEFT JOIN patient t4 ON t4.patient_id = t3.patient_id
LEFT JOIN diabetes_assessment t5 ON t5.patient_id = t4.patient_id
WHERE t2.diagnosis_name LIKE '%Diabetes%' AND t1.clinic_id = '361'
AND t3.visit_status="Active"
GROUP BY t1.patient_id, t5.date_of_assessment, t4.patient_name_en, t3.date_of_visit, t2.diagnosis_name, t5.assessment_result
ORDER BY t5.date_of_assessment DESC
结果是:
如您所见,如果患者多次被诊断出患有不同类型或不同程度的糖尿病,则所有行都会显示出来。但我真正想要的是他第一次被诊断出来,所以结果只会是这两行以蓝色突出显示:
在这里,患者 0361 在2017-04-06 首次被诊断出患有糖尿病。所以我们只得到这个病人的这一行。
我尝试使用 `min(t3.date_of_visit) 但无法正常工作。
【问题讨论】: