Besoin d'aide pour ajuster la requête SQL impliquant des jointures de table

J'ai deux tables: PermanentTable et TemporaryTable .

Il y a 7 colonnes dans le TemporaryTable :

 Id, CreditInvoiceDate, CreditInvoiceNumber, CreditInvoiceAmount, CreditDeniedDate, CreditDeniedReasonId, CreditDeniedNotes. 

Toutes ces colonnes sont également dans le PermanentTable et ont déjà été remplies si l' Id correspondait à un dans le TemporaryTable .

J'ai une requête qui returnne les Ids dans le TemporaryTable et une colonne qui affiche un «Y» est l'Id a été apparié dans le PermanentTable et un «N» si ce n'était pas. Si elles ont été associées, CreditInvoiceDate , CreditInvoiceNumber et CreditInvoiceAmount ou CreditDeniedDate , CreditDeniedReasonId et CreditDeniedNotes seront complétés avec des données (mais pas toutes les 6). Une colonne appelée AuthNumber sera également renseignée si elle correspond. Ma requête les renvoie.

Question

 Select t.Id, p.AuthNumber, p.CreditInvoiceDate, p.CreditInvoiceNumber, p.CreditInvoiceAmount, p.CreditDeniedDate, p.CreditDeniedReasonId, p.CreditDeniedNotes, case when p.Id is not null then 'Y' else 'N' end as Matched from TemporaryCsvUpload t left join PermanentTable p on p.Id = t.Id 

Résultat

entrez la description de l'image ici

C'est le point que je suis arrivé à, mais voici où j'essaie d'aller:

Je voudrais ajuster cette requête afin que je puisse me débarrasser de la colonne Matched à la fin et ai plutôt 2 colonnes d'identification. Un contenant les Ids dans le TemporaryTable qui correspondait dans le PermanentTable et un contenant ceux qui ne l'ont pas fait. Si les ID ne correspondent pas, aucun des autres champs ne sera rempli, il n'est donc pas nécessaire de vérifier.

Faites moi savoir si vous avez des questions. Merci!

la requête ci-dessous devrait vous aider:

 Select case when p.Id is not null then t.Id else null end as tempMatchedId, case when p.Id is null then t.Id else null end as tempUnmatchedId, case when p.Id is not null then p.AuthNumber else null end as AuthNumber, case when p.Id is not null then p.CreditInvoiceDate else null end as CreditInvoiceDate, case when p.Id is not null then p.CreditInvoiceNumber else null end as CreditInvoiceNumber, case when p.Id is not null then p.CreditInvoiceAmount else null end as CreditInvoiceAmount, case when p.Id is not null then p.CreditDeniedDate else null end as CreditDeniedDate, case when p.Id is not null then p.CreditDeniedReasonId else null end as CreditDeniedReasonId, case when p.Id is not null then p.CreditDeniedNotes else null end as CreditDeniedNotes from TemporaryCsvUpload t left join PermanentTable p on p.Id = t.Id 

Ce qui suit devrait fonctionner aussi bien que l'autre réponse, et être beaucoup plus facile à lire:

 Select p.Id as tempMatchedId, case when p.Id is null then t.Id end as tempUnmatchedId, p.AuthNumber, p.CreditInvoiceDate, p.CreditInvoiceNumber, p.CreditInvoiceAmount, p.CreditDeniedDate, p.CreditDeniedReasonId, p.CreditDeniedNotes from TemporaryCsvUpload t left join PermanentTable p on p.Id = t.Id