У меня есть две таблицы:
1-й это DIAGNOZY
, который содержит столбцы: year
, ID
, gendre
, birthday
, ICZ
, чтоИдентификатор медицинского работника, diagnosis_code
и date
.Каждый ряд является записью врачей для пациента.Существует несколько записей для каждого идентификатора одного и того же / другого врача (ICZ) с одинаковым / различным диагнозом.
2-я таблица PACIENT_SEKVENCE_DETAIL
- таблица для ID
с, которые имеют специальный препарат, количество типов наркотиков, которые они использовали ранее, дата первого назначения (date_first
) и дата назначения специального препарата (date_special)
.
Я бы хотел выбрать только тех пациентов, у которых дата диагноза была DIAGNOZY
в тот же день или позже, чем date_special
в PACIENT_SEKVENCE_DETAIL
и которые имели только одну диганозуна все время (без множественного диагноза).
Таблица, которую я хотел бы иметь в конце, будет иметь два столбца: ID
и DG
(диагноз), и будут отдельные пациенты, которые соответствуютзаявленное состояние - поэтому каждый пациент будет там только один раз, так как у него будет не более одного диагноза.
Мой код выглядит следующим образом:
select t1.ID, diagnosis_code as DG
from (
select d.ID as ID, count(distinct diagnosis_code) as count_dg
from DIAGNOZY d join PACIENT_SEKVENCE_DETAIL s on d.ID=s.ID
where d.date>=s.date_special
group by d.ID
having count(distinct diagnosis_code)=1) t1
join DIAGNOZY f on t1.ID=f.ID
group by t1.ID, f.diagnosis_code
Однако он возвращает всех пациентов со всем диагнозом и полностью игнорирует условия внутреннего выбора.
Я очень плохо знаком с SQL и самостоятельно учусь с помощью Интернета, так что извините за мою глупость.
ТАБЛИЦА ДИАГНОСТИКИ:
year ID gendre birth_date ICZ diagnosis_code date
2012 35902587895 M 2000 94618000 L400 2012-06-11
2013 35902587895 M 2000 94619000 L400 2013-02-04
2012 35902587895 M 2000 94618000 L400 2012-07-11
2013 35902587895 M 2000 94618000 L400 2013-05-10
2011 35902591668 M 2000 08009000 L400 2011-09-27
2015 35902596431 M 2000 89177000 M0800 2015-08-26
2010 35902612150 M 2000 10194000 M459 2010-01-07
PACIET_SEKVENCE_DETAIL
ID date_first date_special nr_types_before
35902743897 2014-10-20 2014-10-20 0
35902767371 2016-07-27 2016-07-27 0
35902767756 2015-09-25 2015-09-25 0
35902772607 2010-08-04 2010-08-04 0
35902816112 2013-12-19 2013-12-19 0
35903616362 2014-10-02 2014-10-02 0
35903663981 2010-01-06 2010-01-19 1
Таким образом, в итоговой таблице будут только идентификаторы и коды диагностики для людей, у которых в таблице только один отдельный диагнозDIAGNOZY и присутствуют в другой таблице, где в nr_types_befor это 0.