2016-12-19 5 views
0

Я хотел бы запросить всех пациентов, у которых есть что-либо от 6 недель до 6 месяцев после даты операции и посещения от 9 месяцев до 15-18 месяцев после даты операции ,Запрос на определенный временной интервал после даты основания

Я использовал функцию DateAdd, но мне кажется, что я чего-то не хватает.

SELECT distinct a.SUBJECTID 
FROM [dbo].[XX] a 
JOIN [dbo].[HH] b 
on a.SUBJECTID = b.SUBJECTID 
where b.HH_TOTAL_SCORE is not null 
and (b.HH_EVAL_DATE >= (DATEADD(WEEK,6,a.srg_date)) and b.HH_EVAL_DATE <= (DATEADD(MONTH,6,A.SRG_DATE))) 
+0

Проверьте данные, например. путем выполнения вашего запроса без какого-либо ограничения where, например. «выберите a.hh_total_score, b.hh_eval_date, a.srg_date из xx a, hh b join на a.sjubjectid = b.subjectid", чтобы узнать, являются ли данные такими, какие вы предполагаете; Это поможет, если вы также можете опубликовать свою схему и части данных –

ответ

0

Я считаю, что вам нужно присоединиться к своей таблице HH во второй раз, чтобы получить только тех людей, которые имели послеоперационное посещение в обоих диапазонах дат.

SELECT distinct a.SUBJECTID 
FROM [dbo].[XX] a 
JOIN [dbo].[HH] b on a.SUBJECTID = b.SUBJECTID 
JOIN [dbo].[HH] c on a.SUBJECTID = c.SUBJECTID 
where b.HH_TOTAL_SCORE is not null 
and (b.HH_EVAL_DATE >= (DATEADD(WEEK,6,a.srg_date)) and b.HH_EVAL_DATE <= (DATEADD(MONTH,6,A.SRG_DATE))) 
and (c.HH_EVAL_DATE >= (DATEADD(MONTH,9,a.srg_date)) and c.HH_EVAL_DATE <= (DATEADD(MONTH,18,A.SRG_DATE))) 

Обратите внимание, что я интерпретирую ваше заявление «визит от 9 месяцев до 15-18 месяцев после даты операции» просто означает визит 9 до 18 месяцев после даты операции.