Fondamentalmente ho bisogno di un join esterno sinistro su 2 tabelle (CarePlan e Referral) problema è necessario il più recente Referral Se esiste, è ok se non lo faSQL Server: LEFT OUTER JOIN con TOP 1 per selezionare al massimo una riga
ho queste 2 domande 1. unisce al CarePlan/tavoli di rinvio - crea careplans duplicati se ci sono più riferimenti per un Careplan, o non ha informazioni di riferimento a tutti (join esterno sinistro) 2. selezionare la parte superiore 1 Referral in base alla data, dato un CarePlanId
mi piacerebbe combinare queste 2 così ho afferrare tutte le careplans ed i suoi rinvii, se esiste, se lo fa - prendere solo la più recente rinvio
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
EDIT :
La prima query mi dà qualcosa di simile:
CarePlanID ReferralId ReferralDate
---------- ---------- ------------
1 1 05/15/12
2 NULL NULL
1 2 05/10/12 //Old date, dont want this careplan
La seconda query mi darà il rinvio con la data più recente
ReferralId ReferralDate
---------- ------------
1 05/15/12
I dati di riferimento, possono avere 0 o più rinvii appartenenti ad un Careplan
ReferralID CarePlanId Date
---------- ---------- ----
1 1 05/15/12
2 1 05/10/12
in definitiva voglio una query che mi dà careplans con i riferimenti che hanno la data più recente, o null per i rinvii, se si pretende molto hanno si
come questo:
CarePlanId ReferralId ReferralDate
---------- ---------- ------------
1 1 05/15/12
2 NULL NULL
Grazie - Spero che questo ha un senso
avere problemi a leggere quello che vuoi ma penso che quello che ti serve è cercare come fare una tabella cte o derivata. – HLGEM
Puoi mostrare dati di esempio e risultati desiderati? Come @HLGEM non è chiaro da dove stai iniziando e dove vuoi finire. –
È necessario applicare una croce. – usr