Si prega di dare un'occhiata alla seguente query:
SELECT distinct a.*, coalesce (r.email,r2.email) as "sign_in_email"
into #adobe_prep
FROM dbo.adobe
left join
dbo.registration r ON (a.user_id = r.up_user_id)
left join
dbo.registration r2 ON (a.user_id = r2.entity_id)
In pratica sto cercando di abbinare a.user_id con r.up_user_id e se non vi è alcuna corrispondenza con up_user_id, quindi corrisponde a entity_id. Tuttavia, non c'è alcun condizionale su questa affermazione, quindi ricevo i duplicati perché talvolta a.user_id = r.up_user_id ma anche a.user_id = r2.entity_id (solo per un valore diverso). Puoi aiutare con l'aggiunta di un condizionale che il secondo join di sinistra debba verificarsi solo se a.user_id <> r.up_user_id?
risposte:
1 per risposta № 1Ma tu hai scritto la risposta da solo! Prova ad aggiungere la condizione che hai scritto a parole:
and a.user_id <> r.up_user_id
Come questo:
select distinct a.*, coalesce (r.email,r2.email) as "sign_in_email"
into #adobe_prep
from dbo.adobe
left join dbo.registration r ON (a.user_id = r.up_user_id)
left join dbo.registration r2 ON (a.user_id = r2.entity_id and a.user_id <> r.up_user_id)