#sql #tsql
#sql #tsql
Вопрос:
У меня есть база данных посещений больниц и назначений в одной таблице. Есть три соответствующих столбца:
- PAT_KEY, который является ключом пациента
- HOSP_DISCHRG_DT, которая является датой выписки пациента из больницы
- APPT_CHECKIN_DT, которая является датой, когда пациент пришел на повторный прием
Проблема, с которой я сталкиваюсь, заключается в том, что, хотя ключ пациента соединяет их, HOSP_DISCHRG_DT и APPT_CHECKIN_DT никогда не находятся в одной строке. Итак, если пациент поступил на прием в больницу, а затем пришел неделю спустя на повторный прием, они классифицируются как разные посещения и, следовательно, находятся в разных строках. (Таким образом, это не так просто, как выполнить DATEDIFF)
Моя цель: я хочу настроить индикатор, который:
- 1 если пациент был замечен на приеме в течение 7 дней после выписки из больницы. посещение.
- 0, если они не были замечены при повторном посещении в течение 7 дней.
Примечание: Пациент, который поступает в любое время на 7-й день, должен быть отмечен как 1. Например, пациент, у которого был визит в больницу 26.02.2019 в 13:00, у которого был повторный appt 13.02.2019 в 15:00, должен быть помечен как 1)
Смотрите приведенный ниже код моей попытки:
SELECT PAT_KEY, HOSP_DISCHRG_DT, APPT_CHECKIN_DT,
CASE
WHEN DATEDIFF(day, cast (APPT_CHECKIN_DT as datetime), cast (HOSP_DISCHRG_DT as datetime)) <= 7 THEN 1
ELSE 0
END AS diff
FROM dbo.visit
WHERE HOSP_ADMIT_DT != 'NA' AND HOSP_DISCHRG_DT != 'NA'
AND
PAT_KEY IN (SELECT PAT_KEY FROM dbo.visit WHERE DICT_ENC_TYPE_KEY = 108)
ORDER BY PAT_KEY;
Я ожидал увидеть таблицу с ключом patent и когда они пришли для посещения, с другим столбцом ‘diff’, который был либо 1, либо 0, и показывал, заходили ли они на неделю раньше для посещения. К сожалению, то, что я на самом деле получил, было таблицей нулей.
Комментарии:
1. Примеры данных, желаемые результаты и db<> fiddle — все это помогло бы.
Ответ №1:
Попробуйте использовать подзапрос, чтобы получить каждую необходимую строку и datediff ее, чтобы получить искомое значение..