0
我想從2016-01-01開始選擇第一次有'E'
診斷的人員列表。postgresql從最小值中選擇日期
我的代碼看起來像
SELECT DISTINCT ON(form25.visit.patient_id)
form25.visit.patient_id,
CONCAT(demographics.party.firstname,' ', demographics.party.lastname) AS pacientas,
form25.visit.disease_code,
demographics.party.code,
form25.visit.date,
form25.diagnose.disease_type
FROM form25.visit
JOIN demographics.party
ON form25.visit.patient_id = demographics.party.id
JOIN form25.diagnose
ON form25.visit.patient_id = form25.diagnose.card_id
WHERE form25.visit.disease_code LIKE 'E%'
AND form25.diagnose.disease_type = '+'
AND form25.visit.date >= '2016-01-01'
ORDER BY form25.visit.patient_id, form25.visit.date ASC
結果我得到:
patients E.. 2013,2014,2016, 2017
(包含é..與2016,所以我看到他們)
所有我想要的是消除那些誰在2016年之前有E..
的日期,並且僅查看2016年以來第一次使用它的人。
只爲我的記錄。如何將: 'AND NOT EXISTS( \t從form25.visit V1選擇1 \t \t 其中form25.visit.date = v1.visit.date和v1.visit.date <= '2015年12月31日' )' 比較你的解決方案的性能? –