Мне в основном нужно сделать левое внешнее соединение на 2 таблицах (CarePlan и Referrals). Проблема в том, что мне нужен новейший реферал. Если он существует, его нормально, если он не делает.
У меня эти 2 запроса 1. присоединяется к таблицам CarePlan/Referral - создает дубликаты планов обслуживания, если есть несколько рефералов для плана обслуживания или вообще не имеет реферальной информации (левое внешнее соединение) 2. выберите верхнюю 1 реферал, основанную на дате, с учетом CarePlanId
Я хотел бы объединить эти 2, чтобы я захватил все планы обслуживания и их рефералы, если он существует, если это так - возьмите только новейший реферал
select * from CarePlan c //query 1
left outer join Referral r on
r.CarePlanId = c.CarePlanId
select top 1 * from Referral r //query 2
where r.CarePlanId = '1'
order by ReferralDate desc
ИЗМЕНИТЬ:
Первый запрос дает мне что-то вроде этого:
CarePlanID ReferralId ReferralDate
---------- ---------- ------------
1 1 05/15/12
2 NULL NULL
1 2 05/10/12 //Old date, dont want this careplan
Второй запрос даст мне реферал с самой новой датой
ReferralId ReferralDate
---------- ------------
1 05/15/12
Данные перенаправления могут содержать 0 или более рефералов, относящихся к Careplan
ReferralID CarePlanId Date
---------- ---------- ----
1 1 05/15/12
2 1 05/10/12
В конечном счете, я хочу получить запрос, который дает мне планы по уходу с рефералами, имеющими самую новую дату, или null для рефералов, если у нее нет этого
вот так:
CarePlanId ReferralId ReferralDate
---------- ---------- ------------
1 1 05/15/12
2 NULL NULL
Спасибо - я надеюсь, что это имеет смысл